|
|
On this page you cam view and/or copy/download the
entire source code of SST ShlWAPI.pas Version 1.08.
As ShlWAPI.pas is an import library that uses only three, standard, Delphi units,
it does not require a separate Delphi project.
Its constants, types, and functions, including the ported macros, can be used,
simply by copying it to a folder listed in the paths searched by your
development environment/compiler (e.g. "$(Delphi)\Source\Rtl\Win "
or even better "$(Delphi)\Extras\SST "
and adding it to the uses clause in your Delphi source code.
Nonetheless, a setup package that installs and removes the file in an orderly fashion
will be made available in the (near) future.
| Project File List |
|
File Type: |
File Name: |
Delphi 5 Unit (.pas): |
(SST) ShlWAPI.pas |
|
|
Download file
|
|
| Unit Source Code |
|
{*****************************************************************************}
{ UNIT ShlWAPI.pas }
{ Copyright © Stoelzel Software Technologie 2004 - 2017 }
{ }
{ Author: Dominic Stoelzel }
{ Version : 1.08 }
{ Created : 07 May 2004 }
{ Last modified : 13 May 2017, 04:20 (ds) }
{ }
{ Description of contents : Declares the constants, types, and prototypes, }
{ required to import and implement calls to the functions, exported by the }
{ Windows dynamic link library ShlWAPI.dll. }
{ }
{ Note : Ported from various shlwapi.h versions by Dominic Stoelzel. }
{ Comments enclosed entirely in double quotes "" are original, }
{ Microsoft comments. }
{ }
{*****************************************************************************}
unit ShlWAPI;
{$WEAKPACKAGEUNIT ON}
{$DEFINE SST_SHLWAPIVER5PT0}
{$DEFINE SST_SHLWAPIVER5PT5}
{$DEFINE SST_SHLWAPIVER6PT0}
{$DEFINE SST_SHLWAPIVER6PT0SP1}
{$DEFINE SST_SHLWAPIVER6PT0W2003SP2}
{$DEFINE SST_SHLWAPIVER6PT0VISTA}
{$DEFINE SST_INCLUDESHLWAPICOM}
//Define limiting compiler directives here,
//or better still, in the project settings.
//The following two (commented) examples limit
//the declarations and imported functions to
//ShlWAPI.dll version 5.0 and pre-Vista 6.0
//{$DEFINE _SST_PRESHLWAPIV5PT5}
//{$DEFINE _SST_PRESHLWAPIV6PT0VISTA}
//Import only functions exported
//by ShlWAPI.dll version 4.71
{$IFDEF _SST_PRESHLWAPIV5PT0}
{$UNDEF _SST_SHLWAPIV10PT0WIN10}
{$UNDEF SST_SHLWAPIVER5PT0}
{$UNDEF SST_SHLWAPIVER5PT5}
{$UNDEF SST_SHLWAPIVER6PT0}
{$UNDEF SST_SHLWAPIVER6PT0SP1}
{$UNDEF SST_SHLWAPIVER6PT0W2003SP2}
{$UNDEF SST_SHLWAPIVER6PT0VISTA}
{$UNDEF SST_SHLWAPIVER10PT0WIN10}
{$ENDIF}
//Import only functions exported
//by ShlWAPI.dll versions up to and
//including 5.0
{$IFDEF _SST_PRESHLWAPIV5PT5}
{$UNDEF _SST_PRESHLWAPIV5PT0}
{$UNDEF _SST_SHLWAPIV10PT0WIN10}
{$UNDEF SST_SHLWAPIVER5PT5}
{$UNDEF SST_SHLWAPIVER6PT0}
{$UNDEF SST_SHLWAPIVER6PT0SP1}
{$UNDEF SST_SHLWAPIVER6PT0W2003SP2}
{$UNDEF SST_SHLWAPIVER6PT0VISTA}
{$UNDEF SST_SHLWAPIVER10PT0WIN10}
{$ENDIF}
//Import only functions exported
//by ShlWAPI.dll versions up to and
//including 5.5
{$IFDEF _SST_PRESHLWAPIV6PT0}
{$UNDEF _SST_PRESHLWAPIV5PT0}
{$UNDEF _SST_PRESHLWAPIV5PT5}
{$UNDEF _SST_SHLWAPIV10PT0WIN10}
{$UNDEF SST_SHLWAPIVER6PT0}
{$UNDEF SST_SHLWAPIVER6PT0SP1}
{$UNDEF SST_SHLWAPIVER6PT0W2003SP2}
{$UNDEF SST_SHLWAPIVER6PT0VISTA}
{$UNDEF SST_SHLWAPIVER10PT0WIN10}
{$ENDIF}
//Import only functions exported
//by ShlWAPI.dll versions up to and
//including 6.0
{$IFDEF _SST_PRESHLWAPIV6PT0SP1}
{$UNDEF _SST_PRESHLWAPIV5PT0}
{$UNDEF _SST_PRESHLWAPIV5PT5}
{$UNDEF _SST_SHLWAPIV10PT0WIN10}
{$UNDEF SST_SHLWAPIVER6PT0SP1}
{$UNDEF SST_SHLWAPIVER6PT0W2003SP2}
{$UNDEF SST_SHLWAPIVER6PT0VISTA}
{$UNDEF SST_SHLWAPIVER10PT0WIN10}
{$ENDIF}
//Import only functions exported
//by ShlWAPI.dll versions distributed with
//IE 6.0 SP 1 or earlier
{$IFDEF _SST_PRESHLWAPIV6PT0W2003SP2}
{$UNDEF _SST_PRESHLWAPIV5PT0}
{$UNDEF _SST_PRESHLWAPIV5PT5}
{$UNDEF _SST_PRESHLWAPIV6PT0SP1}
{$UNDEF _SST_SHLWAPIV10PT0WIN10}
{$UNDEF SST_SHLWAPIVER6PT0W2003SP2}
{$UNDEF SST_SHLWAPIVER6PT0VISTA}
{$UNDEF SST_SHLWAPIVER10PT0WIN10}
{$ENDIF}
//Import only functions exported
//by ShlWAPI.dll versions that shipped
//with SP 2 for Win XP/2003 or earlier
{$IFDEF _SST_PRESHLWAPIV6PT0VISTA}
{$UNDEF _SST_PRESHLWAPIV5PT0}
{$UNDEF _SST_PRESHLWAPIV5PT5}
{$UNDEF _SST_PRESHLWAPIV6PT0SP1}
{$UNDEF _SST_PRESSTSHLWAPIV6PT0W2003SP2}
{$UNDEF _SST_SHLWAPIV10PT0WIN10}
{$UNDEF SST_SHLWAPIVER6PT0VISTA}
{$UNDEF SST_SHLWAPIVER10PT0WIN10}
{$ENDIF}
//Import all functions exported
//by ShlWAPI.dll versions up to and
//including 6.1 that shipped with
//Windows 7.
{$IFDEF _SST_SHLWAPIV6PT1WIN7}
{$UNDEF _SST_PRESHLWAPIV5PT0}
{$UNDEF _SST_PRESHLWAPIV5PT5}
{$UNDEF _SST_PRESHLWAPIV6PT0}
{$UNDEF _SST_PRESHLWAPIV6PT0SP1}
{$UNDEF _SST_PRESHLWAPIV6PT0W2003SP2}
{$UNDEF _SST_PRESHLWAPIV6PT0VISTA}
{$UNDEF SST_SHLWAPIVER10PT0WIN10}
{$ENDIF}
//Import functions exported by
//ShlWAPI.dll version 10.0,
//which comes with Window 10.
//Note, that defining "SST_SHLWAPIVER10PT0WIN10"
//DEACTIVATES the import of MLFreeLibrary !
{$IFDEF _SST_SHLWAPIV10PT0WIN10}
{$UNDEF _SST_PRESHLWAPIV5PT0}
{$UNDEF _SST_PRESHLWAPIV5PT5}
{$UNDEF _SST_PRESHLWAPIV6PT0}
{$UNDEF _SST_PRESHLWAPIV6PT0SP1}
{$UNDEF _SST_PRESHLWAPIV6PT0W2003SP2}
{$UNDEF _SST_PRESHLWAPIV6PT0VISTA}
{$DEFINE SST_SHLWAPIVER10PT0WIN10}
{$ELSE}
{$UNDEF SST_SHLWAPIVER10PT0WIN10}
{$ENDIF}
interface
//As an alternative to ActiveX.pas, Ole2.pas, could be used.
//Ole2 is required by the "stream routines"
//ShlObj is required because of the "StrRet..."
//and other COM(+) functions.
uses Windows, ActiveX, ShlObj;
//
// Type definitions.
//
//Some of the original registry functions in this unit
//were declared using the following type definition
//in the MS SDK version 6.1 header file WinReg.h.
//"typedef __success(return==ERROR_SUCCESS) LONG LSTATUS;"
//Should this lead to naming conflicts in the successor versions
//of the Delphi 5 SDK, comment the following line and add
//the newer Delphi SDK unit to the "uses" list above.
type LSTATUS = Longint;
{$EXTERNALSYM LSTATUS}
TYPE SHREGDEL_FLAGS = DWORD;
{$EXTERNALSYM SHREGDEL_FLAGS}
TYPE SHREGENUM_FLAGS = DWORD;
{$EXTERNALSYM SHREGENUM_FLAGS}
TYPE _DllVersionInfo = RECORD
cbSize : DWORD;
dwMajorVersion : DWORD; // Dll (not app.) major version
dwMinorVersion : DWORD; // Dll (not app.) Minor version
dwBuildNumber : DWORD; // Dll (not app.) Build number
dwPlatformID : DWORD; // A DLLVER_PLATFORM_* constant, see below
END;
{$EXTERNALSYM _DllVersionInfo}
//TYPE DLLVERSIONINFO = _DllVersionInfo;
TYPE DllVersionInfo = _DLLVERSIONINFO;
{$EXTERNALSYM DllVersionInfo}
TYPE TDllVersionInfo = DllVersionInfo;
TYPE PDllVersionInfo = ^DllVersionInfo;
TYPE _DLLVERSIONINFO2 = RECORD
info1 : DllVersionInfo;
dwFlags : DWORD;
ullVersion : INT64;
// "Encoded as:"
// "Major 0xFFFF 0000 0000 0000"
// "Minor 0x0000 FFFF 0000 0000"
// "Build 0x0000 0000 FFFF 0000"
// "QFE 0x0000 0000 0000 FFFF"
END;
{$EXTERNALSYM _DLLVERSIONINFO2}
TYPE DLLVERSIONINFO2 = _DLLVERSIONINFO2;
{$EXTERNALSYM DLLVERSIONINFO2}
TYPE TDllVersionInfo2 = DLLVERSIONINFO2;
TYPE PDllVersionInfo2 = ^TDllVersionInfo2;
type LPVOID = POINTER;
{$EXTERNALSYM LPVOID}
type LPCVOID = POINTER;
{$EXTERNALSYM LPCVOID}
type HUSKEY = THandle; //"HUSKEY is a Handle to a User Specific KEY."
{$EXTERNALSYM HUSKEY}
type PHUSKEY = ^HUSKEY;
{$EXTERNALSYM PHUSKEY}
// The URL types that can be tested for in functions URLIsA & URLIsW
type TUrlIs = (URLIS_URL, URLIS_OPAQUE, URLIS_NOHISTORY, URLIS_FILEURL,
URLIS_APPLIABLE, URLIS_DIRECTORY, URLIS_HASQUERY);
{$EXTERNALSYM TUrlIs}
type PUrlIs = ^TUrlIs;
{$EXTERNALSYM PUrlIs}
//"Flags for StrToIntEx"
type STIF_FLAGS = INTEGER;
{$EXTERNALSYM STIF_FLAGS}
type TStifFlags = STIF_FLAGS;
{$EXTERNALSYM TStifFlags}
const STIF_DEFAULT = $00000000;
{$EXTERNALSYM STIF_DEFAULT}
const STIF_SUPPORT_HEX = $00000001;
{$EXTERNALSYM STIF_SUPPORT_HEX}
// Return flags for PathGetCharType
const GCT_INVALID = $0000;
{$EXTERNALSYM GCT_INVALID}
const GCT_LFNCHAR = $0001;
{$EXTERNALSYM GCT_LFNCHAR}
const GCT_SHORTCHAR = $0002;
{$EXTERNALSYM GCT_SHORTCHAR}
const GCT_WILD = $0004;
{$EXTERNALSYM GCT_WILD}
const GCT_SEPARATOR = $0008;
{$EXTERNALSYM GCT_SEPARATOR}
const SHREGSET_HKCU = $00000001; //"Write to HKCU if empty."
{$EXTERNALSYM SHREGSET_HKCU}
const SHREGSET_FORCE_HKCU = $00000002; //"Write to HKCU."
{$EXTERNALSYM SHREGSET_FORCE_HKCU}
const SHREGSET_HKLM = $00000004; //"Write to HKLM if empty."
{$EXTERNALSYM SHREGSET_HKLM}
const SHREGSET_FORCE_HKLM = $00000008; //"Write to HKLM."
{$EXTERNALSYM SHREGSET_FORCE_HKLM}
const SHREGSET_DEFAULT = SHREGSET_FORCE_HKCU OR SHREGSET_HKLM; //"Default is SHREGSET_FORCE_HKCU | SHREGSET_HKLM."
{$EXTERNALSYM SHREGSET_DEFAULT}
const SHREGDEL_DEFAULT = $00000000; //"Delete's HKCU, or HKLM if HKCU is not found."
{$EXTERNALSYM SHREGDEL_DEFAULT}
const SHREGDEL_HKCU = $00000001; //"Delete HKCU only"
{$EXTERNALSYM SHREGDEL_HKCU}
const SHREGDEL_HKLM = $00000010; //"Delete HKLM only."
{$EXTERNALSYM SHREGDEL_HKLM}
const SHREGDEL_BOTH = $00000011; //"Delete both HKCU and HKLM."
{$EXTERNALSYM SHREGDEL_BOTH}
const SHREGENUM_DEFAULT = $00000000; //"Enumerates HKCU or HKLM if not found."
{$EXTERNALSYM SHREGENUM_DEFAULT}
const SHREGENUM_HKCU = $00000001; //"Enumerates HKCU only"
{$EXTERNALSYM SHREGENUM_HKCU}
const SHREGENUM_HKLM = $00000010; //"Enumerates HKLM only."
{$EXTERNALSYM SHREGENUM_HKLM}
const SHREGENUM_BOTH = $00000011; //"Enumerates both HKCU and HKLM without duplicates."
{$EXTERNALSYM SHREGENUM_BOTH}
// Platform IDs for DLLVERSIONINFO
const DLLVER_PLATFORM_WINDOWS = $00000001; // Windows 9x + optionally NT
{$EXTERNALSYM DLLVER_PLATFORM_WINDOWS}
const DLLVER_PLATFORM_NT = $00000002; // (Primarily) Windows NT
{$EXTERNALSYM DLLVER_PLATFORM_NT}
// Mask flags for ullVersion field of DLLVERSIONINFO2
CONST DLLVER_MAJOR_MASK = $FFFF000000000000;
{$EXTERNALSYM DLLVER_MAJOR_MASK}
CONST DLLVER_MINOR_MASK = $0000FFFF00000000;
{$EXTERNALSYM DLLVER_MINOR_MASK}
CONST DLLVER_BUILD_MASK = $00000000FFFF0000;
{$EXTERNALSYM DLLVER_BUILD_MASK}
CONST DLLVER_QFE_MASK = $000000000000FFFF;
{$EXTERNALSYM DLLVER_QFE_MASK}
//
//=============== String Routines ===================================
//
function StrChrA(lpStart : LPCSTR; wMatch : WORD) : LPSTR; stdcall;
{$EXTERNALSYM StrChrA}
function StrChrW(lpStart : LPCWSTR; wMatch : WORD) : LPWSTR; stdcall;
{$EXTERNALSYM StrChrW}
function StrChr(lpStart : LPCSTR; wMatch : WORD) : LPSTR; stdcall;
{$EXTERNALSYM StrChr}
function StrChrIA(lpStart : LPCSTR; wMatch : WORD) : LPSTR; stdcall;
{$EXTERNALSYM StrChrIA}
function StrChrIW(lpStart : LPCWSTR ; wMatch : WORD) : LPWSTR; stdcall;
{$EXTERNALSYM StrChrIW}
function StrChrI(lpStart : LPCSTR; wMatch : WORD) : LPSTR; stdcall;
{$EXTERNALSYM StrChrI}
function StrChrNW(lpStart : LPCWSTR; wMatch : WCHAR; cchMax : UINT) : LPCWSTR; stdcall;
{$EXTERNALSYM StrChrNW}
function StrChrNIW(lpStart : LPCWSTR; wMatch : WCHAR; cchMax : UINT) : LPCWSTR; stdcall;
{$EXTERNALSYM StrChrNIW}
function StrCmpNA(lpStr1 : LPCSTR; lpStr2 : LPCSTR;
nChar : Integer) : Integer; stdcall;
{$EXTERNALSYM StrCmpNA}
function StrCmpNW(lpStr1 : LPCWSTR; lpStr2 : LPCWSTR;
nChar : Integer) : Integer; stdcall;
{$EXTERNALSYM StrCmpNW}
function StrCmpN(lpStr1 : LPCSTR; lpStr2 : LPCSTR;
nChar : Integer) : Integer; stdcall;
{$EXTERNALSYM StrCmpN}
function StrCmpNIA(lpStr1 : LPCSTR; lpStr2 : LPCSTR;
nChar : Integer) : Integer; stdcall;
{$EXTERNALSYM StrCmpNIA}
function StrCmpNIW(lpStr1 : LPCWSTR; lpStr2 : LPCWSTR;
nChar : Integer) : Integer; stdcall;
{$EXTERNALSYM StrCmpNIW}
function StrCmpNI(lpStr1 : LPCSTR; lpStr2 : LPCSTR;
nChar : Integer) : Integer; stdcall;
{$EXTERNALSYM StrCmpNI}
function StrCSpnA(lpStr : LPCSTR; lpSet : LPCSTR) : Integer; stdcall;
{$EXTERNALSYM StrCSpnA}
function StrCSpnW(lpStr : LPCWSTR; lpSet : LPCWSTR) : Integer; stdcall;
{$EXTERNALSYM StrCSpnA}
function StrCSpn(lpStr : LPCSTR; lpSet : LPCSTR) : Integer; stdcall;
{$EXTERNALSYM StrCSpn}
function StrCSpnIA(lpStr : LPCSTR; lpSet : LPCSTR) : Integer; stdcall;
{$EXTERNALSYM StrCSpnIA}
function StrCSpnIW(lpStr : LPCWSTR; lpSet : LPCWSTR) : Integer; stdcall;
{$EXTERNALSYM StrCSpnIW}
function StrCSpnI(lpStr : LPCSTR; lpSet : LPCSTR) : Integer; stdcall;
{$EXTERNALSYM StrCSpnI}
function StrDupA(pszToDup : LPCSTR) : LPSTR; stdcall;
{$EXTERNALSYM StrDupA}
function StrDupW(pszToDup : LPCWSTR) : LPWSTR; stdcall;
{$EXTERNALSYM StrDupW}
function StrDup(pszToDup : LPCSTR) : LPSTR; stdcall;
{$EXTERNALSYM StrDup}
//StrFormatByteSizeEx formatting flags
const SFBS_FLAGS_ROUND_TO_NEAREST_DISPLAYED_DIGIT = $0001;
const SFBS_FLAGS_TRUNCATE_UNDISPLAYED_DECIMAL_DIGITS = $0002;
type SFBS_FLAGS = DWORD;
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
function StrFormatByteSizeEx(ull : ULARGE_INTEGER; flags : SFBS_FLAGS; pszBuf : LPWSTR; cchBuf : UINT) : HRESULT; stdcall;
{$EXTERNALSYM StrFormatByteSizeEx}
{$ENDIF}
function StrFormatByteSizeA(dw : DWORD; szBuf : LPSTR;
uiBufSize : UINT) : LPSTR; stdcall;
{$EXTERNALSYM StrFormatByteSizeA}
function StrFormatByteSizeW(qdw : LONGLONG ; szBuf : LPWSTR;
uiBufSize : UINT) : LPWSTR; stdcall;
{$EXTERNALSYM StrFormatByteSizeW}
function StrFormatByteSize(dw : DWORD; szBuf : LPSTR;
uiBufSize : UINT) : LPSTR; stdcall;
{$EXTERNALSYM StrFormatByteSize}
{$IFDEF SST_SHLWAPIVER5PT0}
function StrFormatByteSize64A(qdw : LONGLONG; pszBuf : LPSTR; cchBuf : UINT) : LPSTR; stdcall;
{$EXTERNALSYM StrFormatByteSize64A}
function StrFormatByteSize64(qdw : LONGLONG; pszBuf : LPSTR; cchBuf : UINT) : LPSTR; stdcall;
{$EXTERNALSYM StrFormatByteSize64}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function StrFormatKBSizeA(qdw : LONGLONG; pszBuf : LPSTR; cchBuf : UINT) : LPSTR; stdcall;
{$EXTERNALSYM StrFormatKBSizeA}
function StrFormatKBSizeW(qdw : LONGLONG; pszBuf : LPWSTR; cchBuf : UINT) : LPWSTR; stdcall;
{$EXTERNALSYM StrFormatKBSizeW}
function StrFormatKBSize(qdw : LONGLONG; pszBuf : LPSTR; cchBuf : UINT) : LPSTR; stdcall;
{$EXTERNALSYM StrFormatKBSize}
{$ENDIF}
function StrFromTimeIntervalA(pszOut : LPSTR; cchMax : UINT; dwTimeMS : DWORD;
digits : Integer) : Integer; stdcall;
{$EXTERNALSYM StrFromTimeIntervalA}
function StrFromTimeIntervalW(pszOut : LPWSTR; cchMax : UINT; dwTimeMS : DWORD;
digits : Integer) : Integer; stdcall;
{$EXTERNALSYM StrFromTimeIntervalW}
function StrFromTimeInterval(pszOut : LPSTR; cchMax : UINT; dwTimeMS : DWORD;
digits : Integer) : Integer; stdcall;
{$EXTERNALSYM StrFromTimeInterval}
function StrIsIntlEqualA(fCaseSens : BOOL; lpString1 : LPCSTR;
lpString2 : LPCSTR; nChar : Integer) : BOOL; stdcall;
{$EXTERNALSYM StrIsIntlEqualA}
function StrIsIntlEqualW(fCaseSens : BOOL; lpString1 : LPCWSTR;
lpString2 : LPCWSTR; nChar : Integer) : BOOL; stdcall;
{$EXTERNALSYM StrIsIntlEqualW}
function StrIsIntlEqual(fCaseSens : BOOL; lpString1 : LPCSTR;
lpString2 : LPCSTR; nChar : Integer) : BOOL; stdcall;
{$EXTERNALSYM StrIsIntlEqual}
function StrNCatA(psz1 : LPSTR; psz2 : LPCSTR;
cchMax : Integer) : LPSTR; stdcall;
{$EXTERNALSYM StrNCatA}
function StrNCatW(psz1 : LPWSTR; psz2 : LPCWSTR;
cchMax : Integer) : LPWSTR; stdcall;
{$EXTERNALSYM StrNCatW}
function StrNCat(psz1 : LPSTR; psz2 : LPCSTR;
cchMax : Integer) : LPSTR; stdcall;
{$EXTERNALSYM StrNCat}
function StrPBrkA(psz : LPCSTR; pszSet : LPCSTR) : LPSTR; stdcall;
{$EXTERNALSYM StrPBrkA}
function StrPBrkW(psz : LPCWSTR; pszSet : LPCWSTR) : LPWSTR; stdcall;
{$EXTERNALSYM StrPBrkW}
function StrPBrk(psz : LPCSTR; pszSet : LPCSTR) : LPSTR; stdcall;
{$EXTERNALSYM StrPBrk}
function StrRChrA(lpStart : LPCSTR; lpEnd : LPCSTR;
wMatch : WORD) : LPSTR; stdcall;
{$EXTERNALSYM StrRChrA}
function StrRChrW(lpStart : LPCWSTR; lpEnd : LPCWSTR;
wMatch : WORD) : LPWSTR; stdcall;
{$EXTERNALSYM StrRChrW}
function StrRChr(lpStart : LPCSTR; lpEnd : LPCSTR;
wMatch : WORD) : LPSTR; stdcall;
{$EXTERNALSYM StrRChr}
function StrRChrIA(lpStart : LPCSTR; lpEnd : LPCSTR;
wMatch : WORD) : LPSTR; stdcall;
{$EXTERNALSYM StrRChrIA}
function StrRChrIW(lpStart : LPCWSTR; lpEnd : LPCWSTR;
wMatch : WORD) : LPWSTR; stdcall;
{$EXTERNALSYM StrRChrIW}
function StrRChrI(lpStart : LPCSTR; lpEnd : LPCSTR;
wMatch : WORD) : LPSTR; stdcall;
{$EXTERNALSYM StrRChrI}
function StrRStrIA(lpSource : LPCSTR; lpLast : LPCSTR;
lpSrch : LPCSTR) : LPSTR; stdcall;
{$EXTERNALSYM StrRStrIA}
function StrRStrIW(lpSource : LPCWSTR; lpLast : LPCWSTR;
lpSrch : LPCWSTR) : LPWSTR; stdcall;
{$EXTERNALSYM StrRStrIW}
function StrRStrI(lpSource : LPCSTR; lpLast : LPCSTR;
lpSrch : LPCSTR) : LPSTR; stdcall;
{$EXTERNALSYM StrRStrI}
function StrSpnA(psz : LPCSTR; pszSet : LPCSTR) : Integer; stdcall;
{$EXTERNALSYM StrSpnA}
function StrSpnW(psz : LPCWSTR; pszSet : LPCWSTR) : Integer; stdcall;
{$EXTERNALSYM StrSpnW}
function StrSpn(psz : LPCSTR; pszSet : LPCSTR) : Integer; stdcall;
{$EXTERNALSYM StrSpn}
function StrStrA(lpFirst : LPCSTR; lpSrch : LPCSTR) : LPSTR; stdcall;
{$EXTERNALSYM StrStrA}
function StrStrW(lpFirst : LPCWSTR; lpSrch : LPCWSTR) : LPWSTR; stdcall;
{$EXTERNALSYM StrStrW}
function StrStr(lpFirst : LPCSTR; lpSrch : LPCSTR) : LPSTR; stdcall;
{$EXTERNALSYM StrStr}
function StrStrIA(lpFirst : LPCSTR; lpSrch : LPCSTR) : LPSTR; stdcall;
{$EXTERNALSYM StrStrIA}
function StrStrIW(lpFirst : LPCWSTR; lpSrch : LPCWSTR) : LPWSTR; stdcall;
{$EXTERNALSYM StrStrIW}
function StrStrI(lpFirst : LPCSTR; lpSrch : LPCSTR) : LPSTR; stdcall;
{$EXTERNALSYM StrStrI}
{$IFDEF SST_SHLWAPIVER6PT0}
function StrStrNW(lpFirst : LPCWSTR; lpSrch : LPCWSTR; cchMax : UINT) : LPCWSTR; stdcall;
{$EXTERNALSYM StrStrNW}
function StrStrNIW(lpFirst : LPCWSTR; lpSrch : LPCWSTR; cchMax : UINT) : LPCWSTR; stdcall;
{$EXTERNALSYM StrStrNIW}
{$ENDIF}
function StrToIntA(lpSrc : LPCSTR) : Integer; stdcall;
{$EXTERNALSYM StrToIntA}
function StrToIntW(lpSrc : LPCWSTR) : Integer; stdcall;
{$EXTERNALSYM StrToIntW}
function StrToInt(lpSrc : LPCSTR) : Integer; stdcall;
{$EXTERNALSYM StrToInt}
function StrToIntExA(pszString : LPCSTR; dwFlags : DWORD;
piRet : PInteger) : BOOL; stdcall;
{$EXTERNALSYM StrToIntExA}
function StrToIntExW(pszString : LPCWSTR; dwFlags : DWORD;
piRet : PInteger) : BOOL; stdcall;
{$EXTERNALSYM StrToIntExW}
function StrToIntEx(pszString : LPCSTR; dwFlags : DWORD;
piRet : PInteger) : BOOL; stdcall;
{$EXTERNALSYM StrToIntEx}
{$IFDEF SST_SHLWAPIVER6PT0}
function StrToInt64ExA(pszString : LPCSTR; dwFlags : STIF_FLAGS; pllRet : PLargeInteger) : BOOL; stdcall;
{$EXTERNALSYM StrToInt64ExA}
function StrToInt64ExW(pszString : LPCWSTR; dwFlags : STIF_FLAGS; pllRet : PLargeInteger) : BOOL; stdcall;
{$EXTERNALSYM StrToInt64ExW}
function StrToInt64Ex(pszString : LPCSTR; dwFlags : STIF_FLAGS; pllRet : PLargeInteger) : BOOL; stdcall;
{$EXTERNALSYM StrToInt64Ex}
{$ENDIF}
function StrTrimA(psz : LPSTR; pszTrimChars : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM StrTrimA}
function StrTrimW(psz : LPWSTR; pszTrimChars : LPCWSTR) : BOOL; stdcall;
{$EXTERNALSYM StrTrimW}
function StrTrim(psz : LPSTR; pszTrimChars : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM StrTrim}
//Possibly declared with erroneous parameters. Check and revise if necessary !!!
function ChrCmpIA(w1 : WORD; w2 : WORD) : BOOL; stdcall;
{$EXTERNALSYM ChrCmpIA}
function ChrCmpIW(w1 : WORD; w2 : WORD) : BOOL; stdcall;
{$EXTERNALSYM ChrCmpIW}
function ChrCmpI(w1 : WORD; w2 : WORD) : BOOL; stdcall;
{$EXTERNALSYM ChrCmpI}
function StrCatW(psz1 : LPWSTR; psz2 : LPCWSTR) : LPWSTR; stdcall;
{$EXTERNALSYM StrCatW}
function StrCmpW(psz1 : LPCWSTR; psz2 : LPCWSTR) : Integer; stdcall;
{$EXTERNALSYM StrCmpW}
function StrCmp(psz1 : LPCWSTR; psz2 : LPCWSTR) : Integer; stdcall;
{$EXTERNALSYM StrCmp}
function StrCmpIW(psz1 : LPCWSTR; psz2 : LPCWSTR) : Integer; stdcall;
{$EXTERNALSYM StrCmpIW}
function StrCmpI(psz1 : LPCWSTR; psz2 : LPCWSTR) : Integer; stdcall;
{$EXTERNALSYM StrCmpI}
function StrCpyW(psz1 : LPWSTR; psz2 : LPCWSTR) : LPWSTR; stdcall;
{$EXTERNALSYM StrCpyW}
function StrCpy(psz1 : LPWSTR; psz2 : LPCWSTR) : LPWSTR; stdcall;
{$EXTERNALSYM StrCpy}
function StrCpyNW(psz1 : LPWSTR; psz2 : LPCWSTR;
cchMax : Integer) : LPWSTR; stdcall;
{$EXTERNALSYM StrCpyNW}
function StrCpyN(psz1 : LPWSTR; psz2 : LPCWSTR;
cchMax : Integer) : LPWSTR; stdcall;
{$EXTERNALSYM StrCpyN}
{$IFDEF SST_SHLWAPIVER5PT0}
function StrCatBuffA(pszDest : LPSTR; pszSrc : LPCSTR; cchDestBuffSize : Integer) : LPSTR; stdcall;
{$EXTERNALSYM StrCatBuffA}
function StrCatBuffW(pszDest : LPWSTR; pszSrc : LPCWSTR; cchDestBuffSize : Integer) : LPWSTR; stdcall;
{$EXTERNALSYM StrCatBuffW}
function StrCatBuff(pszDest : LPSTR; pszSrc : LPCSTR; cchDestBuffSize : Integer) : LPSTR; stdcall;
{$EXTERNALSYM StrCatBuff}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function wvnsprintfA(lpOutBuf : LPSTR; cchLimitIn : Integer; lpFmt : LPCSTR; arglist : Pointer) : Integer; stdcall;
{$EXTERNALSYM wvnsprintfA}
function wvnsprintfW(lpOutBuf : LPWSTR; cchLimitIn : Integer; lpFmt : LPCWSTR; arglist : Pointer) : Integer; stdcall;
{$EXTERNALSYM wvnsprintfW}
function wvnsprintf(lpOutBuf : LPSTR; cchLimitIn : Integer; lpFmt : LPCSTR; arglist : Pointer) : Integer; stdcall;
{$EXTERNALSYM wvnsprintf}
{$ENDIF}
//Macros ported as functions (see below and "implementation" section at bottom of unit)
//#define StrIntlEqNA( s1, s2, nChar) StrIsIntlEqualA( TRUE, s1, s2, nChar)
//#define StrIntlEqNW( s1, s2, nChar) StrIsIntlEqualW( TRUE, s1, s2, nChar)
//#define StrIntlEqNIA(s1, s2, nChar) StrIsIntlEqualA(FALSE, s1, s2, nChar)
//#define StrIntlEqNIW(s1, s2, nChar) StrIsIntlEqualW(FALSE, s1, s2, nChar)
function StrIntlEqNA(lpString1 : LPCSTR; lpString2 : LPCSTR; nChar : Integer) : BOOL; stdcall;
{$EXTERNALSYM StrIntlEqNA}
function StrIntlEqNW(lpString1 : LPCWSTR; lpString2 : LPCWSTR; nChar : Integer) : BOOL; stdcall;
{$EXTERNALSYM StrIntlEqNW}
function StrIntlEqNIA(lpString1 : LPCSTR; lpString2 : LPCSTR; nChar : Integer) : BOOL; stdcall;
{$EXTERNALSYM StrIntlEqNIA}
function StrIntlEqNIW(lpString1 : LPCWSTR; lpString2 : LPCWSTR; nChar : Integer) : BOOL; stdcall;
{$EXTERNALSYM StrIntlEqNIW}
{$IFDEF SST_SHLWAPIVER5PT0}
//{$IFDEF SST_SHLWAPIVER6PT0W2003SP2}
function StrCmpCA(pszStr1 : LPCSTR; pszStr2 : LPCSTR) : Integer; stdcall;
{$EXTERNALSYM StrCmpCA}
function StrCmpCW(pszStr1 : LPCWSTR; pszStr2 : LPCWSTR) : Integer; stdcall;
{$EXTERNALSYM StrCmpCW}
function StrCmpC(pszStr1 : LPCSTR; pszStr2 : LPCSTR) : Integer; stdcall;
{$EXTERNALSYM StrCmpC}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
//{$IFDEF SST_SHLWAPIVER6PT0W2003SP2}
function StrCmpICA(pszStr1 : LPCSTR; pszStr2 : LPCSTR) : Integer; stdcall;
{$EXTERNALSYM StrCmpICA}
function StrCmpICW(pszStr1 : LPCWSTR; pszStr2 : LPCWSTR) : Integer; stdcall;
{$EXTERNALSYM StrCmpICW}
function StrCmpIC(pszStr1 : LPCSTR; pszStr2 : LPCSTR) : Integer; stdcall;
{$EXTERNALSYM StrCmpIC}
{$ENDIF}
function StrCmpNCA(pszStr1 : LPCSTR; pszStr2 : LPCSTR; nChar : Integer) : Integer; stdcall;
{$EXTERNALSYM StrCmpNCA}
function StrCmpNCW(pszStr1 : LPCWSTR; pszStr2 : LPCWSTR; nChar : Integer) : Integer; stdcall;
{$EXTERNALSYM StrCmpNCW}
function StrCmpNC(pszStr1 : LPCSTR; pszStr2 : LPCSTR; nChar : Integer) : Integer; stdcall;
{$EXTERNALSYM StrCmpNC}
function StrCmpNICA(pszStr1 : LPCSTR; pszStr2 : LPCSTR; nChar : Integer) : Integer; stdcall;
{$EXTERNALSYM StrCmpNICA}
function StrCmpNICW(pszStr1 : LPCWSTR; pszStr2 : LPCWSTR; nChar : Integer) : Integer; stdcall;
{$EXTERNALSYM StrCmpNICW}
function StrCmpNIC(pszStr1 : LPCSTR; pszStr2 : LPCSTR; nChar : Integer) : Integer; stdcall;
{$EXTERNALSYM StrCmpNIC}
{$IFDEF SST_SHLWAPIVER5PT0}
function IntlStrEqWorkerA(fCaseSens : BOOL; lpString1 : LPCSTR; lpString2 : LPCSTR; nChar : Integer) : BOOL; stdcall;
{$EXTERNALSYM IntlStrEqWorkerA}
function IntlStrEqWorkerW(fCaseSens : BOOL; lpString1 : LPCWSTR; lpString2 : LPCWSTR; nChar : Integer) : BOOL; stdcall;
{$EXTERNALSYM IntlStrEqWorkerW}
function IntlStrEqWorker(fCaseSens : BOOL; lpString1 : LPCSTR; lpString2 : LPCSTR; nChar : Integer) : BOOL; stdcall;
{$EXTERNALSYM IntlStrEqWorker}
//Macros ported as functions (see below and "implementation" at bottom of unit)
//#define IntlStrEqNA( s1, s2, nChar) IntlStrEqWorkerA( TRUE, s1, s2, nChar)
//#define IntlStrEqNW( s1, s2, nChar) IntlStrEqWorkerW( TRUE, s1, s2, nChar)
//#define IntlStrEqNIA(s1, s2, nChar) IntlStrEqWorkerA(FALSE, s1, s2, nChar)
//#define IntlStrEqNIW(s1, s2, nChar) IntlStrEqWorkerW(FALSE, s1, s2, nChar)
function IntlStrEqNA(lpString1 : LPCSTR; lpString2 : LPCSTR; nChar : Integer) : BOOL; stdcall;
{$EXTERNALSYM IntlStrEqNA}
function IntlStrEqNW(lpString1 : LPCWSTR; lpString2 : LPCWSTR; nChar : Integer) : BOOL; stdcall;
{$EXTERNALSYM IntlStrEqNW}
function IntlStrEqN(lpString1 : LPCSTR; lpString2 : LPCSTR; nChar : Integer) : BOOL; stdcall;
{$EXTERNALSYM IntlStrEqN}
function IntlStrEqNIA(lpString1 : LPCSTR; lpString2 : LPCSTR; nChar : Integer) : BOOL; stdcall;
{$EXTERNALSYM IntlStrEqNIA}
function IntlStrEqNIW(lpString1 : LPCWSTR; lpString2 : LPCWSTR; nChar : Integer) : BOOL; stdcall;
{$EXTERNALSYM IntlStrEqNIW}
function IntlStrEqNI(lpString1 : LPCSTR; lpString2 : LPCSTR; nChar : Integer) : BOOL; stdcall;
{$EXTERNALSYM IntlStrEqNI}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
{$IFDEF SST_INCLUDESHLWAPICOM}
function StrRetToStrA(VAR pstr : STRRET; pidl : PItemIDList; VAR ppsz : LPSTR) : HRESULT; stdcall;
{$EXTERNALSYM StrRetToStrA}
function StrRetToStrW(VAR pstr : STRRET; pidl : PItemIDList; VAR ppsz : LPWSTR) : HRESULT; stdcall;
{$EXTERNALSYM StrRetToStrW}
function StrRetToStr(VAR pstr : STRRET; pidl : PItemIDList; VAR ppsz : LPSTR) : HRESULT; stdcall;
{$EXTERNALSYM StrRetToStr}
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
{$IFDEF SST_INCLUDESHLWAPICOM}
function StrRetToBufA(VAR pstr : STRRET; pidl : PItemIDList; pszBuf : LPSTR; cchBuf : UINT) : HRESULT; stdcall;
{$EXTERNALSYM StrRetToBufA}
function StrRetToBufW(VAR pstr : STRRET; pidl : PItemIDList; pszBuf : LPWSTR; cchBuf : UINT) : HRESULT; stdcall;
{$EXTERNALSYM StrRetToBufW}
function StrRetToBuf(VAR pstr : STRRET; pidl : PItemIDList; pszBuf : LPSTR; cchBuf : UINT) : HRESULT; stdcall;
{$EXTERNALSYM StrRetToBuf}
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function SHStrDupA(psz : LPCSTR; VAR ppwsz : LPWSTR) : HRESULT; stdcall;
{$EXTERNALSYM SHStrDupA}
function SHStrDupW(psz : LPCWSTR; VAR ppwsz : LPWSTR) : HRESULT; stdcall;
{$EXTERNALSYM SHStrDupW}
function SHStrDup(psz : LPCSTR; VAR ppwsz : LPWSTR) : HRESULT; stdcall;
{$EXTERNALSYM SHStrDup}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT5}
function StrCmpLogicalW(psz1 : LPCWSTR; psz2 : LPCWSTR) : Integer; stdcall;
{$EXTERNALSYM StrCmpLogicalW}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT5}
function StrCatChainW(pszDst : LPWSTR; cchDst : DWORD; ichAt : DWORD; pszSrc : LPCWSTR) : DWORD; stdcall;
{$EXTERNALSYM StrCatChainW}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT5}
{$IFDEF SST_INCLUDESHLWAPICOM}
function StrRetToBSTR(pstr : PSTRRet; pidl : PItemIDList; VAR pbstr : TBStr) : HRESULT; stdcall;
{$EXTERNALSYM StrRetToBSTR}
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT5}
function SHLoadIndirectString(pszSource : LPCWSTR; pszOutBuf : LPWSTR; cchOutBuf : UINT; VAR ppvReserved : Pointer) : HRESULT; stdcall;
{$EXTERNALSYM SHLoadIndirectString}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0W2003SP2}
//{$IFDEF SST_SHLWAPIVER5PT0}
function IsCharSpaceA(ach : CHAR) : BOOL; stdcall;
{$EXTERNALSYM IsCharSpaceA}
function IsCharSpaceW(wch : WCHAR) : BOOL; stdcall;
{$EXTERNALSYM IsCharSpaceW}
function IsCharSpace(ach : CHAR) : BOOL; stdcall;
{$EXTERNALSYM IsCharSpace}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function CharLowerWrapW(pch : LPWSTR) : LPWSTR; stdcall;
{$EXTERNALSYM CharLowerWrapW}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function CharUpperBuffWrapW(pch : LPWSTR; cchLength : DWORD) : DWORD; stdcall;
{$EXTERNALSYM CharUpperBuffWrapW}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function IsCharAlphaNumericWrapW(ch : WCHAR) : BOOL; stdcall;
{$EXTERNALSYM IsCharAlphaNumericWrapW}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function GetDateFormatWrapW(Locale : LCID; dwFlags : DWORD; lpDate : PSystemTime;
pwzFormat : LPCWSTR; pwzDateStr : LPWSTR; cchDate : Integer) : Integer; stdcall;
{$EXTERNALSYM GetDateFormatWrapW}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function GetTimeFormatWrapW(Locale : LCID;dwFlags : DWORD; lpTime : PSystemTime;
pwzFormat : LPCWSTR; pwzTimeStr : LPWSTR; cchTime : Integer) : Integer; stdcall;
{$EXTERNALSYM GetTimeFormatWrapW}
{$ENDIF}
//
//=============== Path Routines ===================================
//
function PathAddBackslashA(pszPath : LPSTR) : LPSTR; stdcall;
{$EXTERNALSYM PathAddBackslashA}
function PathAddBackslashW(pszPath : LPWSTR) : LPWSTR; stdcall;
{$EXTERNALSYM PathAddBackslashW}
function PathAddBackslash(pszPath : LPSTR) : LPSTR; stdcall;
{$EXTERNALSYM PathAddBackslash}
function PathAddExtensionA(pszPath : LPSTR; pszExt : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathAddExtensionA}
function PathAddExtensionW(pszPath : LPWSTR; pszExt : LPCWSTR) : BOOL; stdcall;
{$EXTERNALSYM PathAddExtensionW}
function PathAddExtension(pszPath : LPSTR; pszExt : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathAddExtension}
function PathAppendA(pszPath : LPSTR; pszMore : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathAppendA}
function PathAppendW(pszPath : LPWSTR; pszMore : LPCWSTR) : BOOL; stdcall;
{$EXTERNALSYM PathAppendW}
function PathAppend(pszPath : LPSTR; pszMore : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathAppend}
function PathBuildRootA(szRoot : LPSTR; iDrive : Integer) : LPSTR; stdcall;
{$EXTERNALSYM PathBuildRootA}
function PathBuildRootW(szRoot : LPWSTR; iDrive : Integer) : LPWSTR; stdcall;
{$EXTERNALSYM PathBuildRootW}
function PathBuildRoot(szRoot : LPSTR; iDrive : Integer) : LPSTR; stdcall;
{$EXTERNALSYM PathBuildRoot}
function PathCanonicalizeA(pszBuf : LPSTR; pszPath : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathCanonicalizeA}
function PathCanonicalizeW(pszBuf : LPWSTR; pszPath : LPCWSTR) : BOOL; stdcall;
{$EXTERNALSYM PathCanonicalizeW}
function PathCanonicalize(pszBuf : LPSTR; pszPath : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathCanonicalize}
function PathCombineA(szDest : LPSTR; lpszDir : LPCSTR;
lpszFile : LPCSTR) : LPSTR; stdcall;
{$EXTERNALSYM PathCombineA}
function PathCombineW(szDest : LPWSTR; lpszDir : LPCWSTR;
lpszFile : LPCWSTR) : LPWSTR; stdcall;
{$EXTERNALSYM PathCombineW}
function PathCombine(szDest : LPSTR; lpszDir : LPCSTR;
lpszFile : LPCSTR) : LPSTR; stdcall;
{$EXTERNALSYM PathCombine}
function PathCompactPathA(hDC : HDC; pszPath : LPSTR;
dx : UINT) : BOOL; stdcall;
{$EXTERNALSYM PathCompactPathA}
function PathCompactPathW(hDC : HDC; pszPath : LPWSTR;
dx : UINT) : BOOL; stdcall;
{$EXTERNALSYM PathCompactPathW}
function PathCompactPath(hDC : HDC; pszPath : LPSTR;
dx : UINT) : BOOL; stdcall;
{$EXTERNALSYM PathCompactPath}
function PathCompactPathExA(pszOut : LPSTR; pszSrc : LPCSTR;
cchMax : UINT; dwFlags : DWORD) : BOOL; stdcall;
{$EXTERNALSYM PathCompactPathExA}
function PathCompactPathExW(pszOut : LPWSTR; pszSrc : LPCWSTR;
cchMax : UINT; dwFlags : DWORD) : BOOL; stdcall;
{$EXTERNALSYM PathCompactPathExW}
function PathCompactPathEx(pszOut : LPSTR; pszSrc : LPCSTR;
cchMax : UINT; dwFlags : DWORD) : BOOL; stdcall;
{$EXTERNALSYM PathCompactPathEx}
function PathCommonPrefixA(pszFile1 : LPCSTR; pszFile2 : LPCSTR;
achPath : LPSTR) : Integer; stdcall;
{$EXTERNALSYM PathCommonPrefixA}
function PathCommonPrefixW(pszFile1 : LPCWSTR; pszFile2 : LPCWSTR;
achPath : LPWSTR) : Integer; stdcall;
{$EXTERNALSYM PathCommonPrefixW}
function PathCommonPrefix(pszFile1 : LPCSTR; pszFile2 : LPCSTR;
achPath : LPSTR) : Integer; stdcall;
{$EXTERNALSYM PathCommonPrefix}
function PathFileExistsA(pszPath : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathFileExistsA}
function PathFileExistsW(pszPath : LPCWSTR) : BOOL; stdcall;
{$EXTERNALSYM PathFileExistsW}
function PathFileExists(pszPath : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathFileExists}
function PathFindExtensionA(pszPath : LPCSTR) : LPSTR; stdcall;
{$EXTERNALSYM PathFindExtensionA}
function PathFindExtensionW(pszPath : LPCWSTR) : LPWSTR; stdcall;
{$EXTERNALSYM PathFindExtensionW}
function PathFindExtension(pszPath : LPCSTR) : LPSTR; stdcall;
{$EXTERNALSYM PathFindExtension}
function PathFindFileNameA(pszPath : LPCSTR) : LPSTR; stdcall;
{$EXTERNALSYM PathFindFileNameA}
function PathFindFileNameW(pszPath : LPCWSTR) : LPWSTR; stdcall;
{$EXTERNALSYM PathFindFileNameW}
function PathFindFileName(pszPath : LPCSTR) : LPSTR; stdcall;
{$EXTERNALSYM PathFindFileName}
function PathFindNextComponentA(pszPath : LPCSTR) : LPSTR; stdcall;
{$EXTERNALSYM PathFindNextComponentA}
function PathFindNextComponentW(pszPath : LPCWSTR) : LPWSTR; stdcall;
{$EXTERNALSYM PathFindNextComponentW}
function PathFindNextComponent(pszPath : LPCSTR) : LPSTR; stdcall;
{$EXTERNALSYM PathFindNextComponent}
//LPCSTR * ppszOtherDirs
//LPCWSTR * ppszOtherDirs
function PathFindOnPathA(pszPath : LPCSTR;
ppszOtherDirs : POINTER) : BOOL; stdcall;
{$EXTERNALSYM PathFindOnPathA}
function PathFindOnPathW(pszPath : LPWSTR;
ppszOtherDirs : POINTER) : BOOL; stdcall;
{$EXTERNALSYM PathFindOnPathW}
function PathFindOnPath(pszPath : LPCSTR;
ppszOtherDirs : POINTER) : BOOL; stdcall;
{$EXTERNALSYM PathFindOnPath}
{$IFDEF SST_SHLWAPIVER5PT0}
function PathFindSuffixArrayA(pszPath : LPCSTR; apszSuffix : LPCSTR; iArraySize : Integer) : LPCSTR; stdcall;
{$EXTERNALSYM PathFindSuffixArrayA}
function PathFindSuffixArrayW(pszPath : LPCWSTR; apszSuffix : LPCWSTR; iArraySize : Integer) : LPCWSTR; stdcall;
{$EXTERNALSYM PathFindSuffixArrayW}
function PathFindSuffixArray(pszPath : LPCSTR; apszSuffix : LPCSTR; iArraySize : Integer) : LPCSTR; stdcall;
{$EXTERNALSYM PathFindSuffixArray}
{$ENDIF}
function PathGetArgsA(pszPath : LPCSTR) : LPSTR; stdcall;
{$EXTERNALSYM PathGetArgsA}
function PathGetArgsW(pszPath : LPCWSTR) : LPWSTR; stdcall;
{$EXTERNALSYM PathGetArgsW}
function PathGetArgs(pszPath : LPCSTR) : LPSTR; stdcall;
{$EXTERNALSYM PathGetArgs}
{$IFDEF SST_SHLWAPIVER5PT0}
{$IFNDEF SST_NOINCLUDESSTDYNSHLWAPI}
function PathIsLFNFileSpecA(lpName : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsLFNFileSpecA}
function PathIsLFNFileSpecW(lpName : LPCWSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsLFNFileSpecW}
function PathIsLFNFileSpec(lpName : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsLFNFileSpec}
{$ENDIF}
{$ENDIF}
function PathGetCharTypeA(ch : UCHAR) : UINT; stdcall;
{$EXTERNALSYM PathGetCharTypeA}
function PathGetCharTypeW(ch : WCHAR) : UINT; stdcall;
{$EXTERNALSYM PathGetCharTypeW}
function PathGetCharType(ch : UCHAR) : UINT; stdcall;
{$EXTERNALSYM PathGetCharType}
function PathGetDriveNumberA(pszPath: LPCSTR) : Integer; stdcall;
{$EXTERNALSYM PathGetDriveNumberA}
function PathGetDriveNumberW(pszPath : LPCSTR) : Integer; stdcall;
{$EXTERNALSYM PathGetDriveNumberW}
function PathGetDriveNumber(pszPath: LPCSTR) : Integer; stdcall;
{$EXTERNALSYM PathGetDriveNumber}
function PathIsDirectoryA(pszPath : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsDirectoryA}
function PathIsDirectoryW(pszPath : LPCWSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsDirectoryW}
function PathIsDirectory(pszPath : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsDirectory}
{$IFDEF SST_SHLWAPIVER5PT0}
function PathIsDirectoryEmptyA(pszPath : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsDirectoryEmptyA}
function PathIsDirectoryEmptyW(pszPath : LPCWSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsDirectoryEmptyW}
function PathIsDirectoryEmpty(pszPath : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsDirectoryEmpty}
{$ENDIF}
function PathIsFileSpecA(pszPath : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsFileSpecA}
function PathIsFileSpecW(pszPath : LPCWSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsFileSpecW}
function PathIsFileSpec(pszPath : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsFileSpec}
function PathIsPrefixA(pszPrefix : LPCSTR; pszPath : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsPrefixA}
function PathIsPrefixW(pszPrefix : LPCWSTR; pszPath : LPCWSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsPrefixW}
function PathIsPrefix(pszPrefix : LPCSTR; pszPath : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsPrefix}
function PathIsRelativeA(pszPath : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsRelativeA}
function PathIsRelativeW(pszPath : LPCWSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsRelativeW}
function PathIsRelative(pszPath : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsRelative}
function PathIsRootA(pszPath : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsRootA}
function PathIsRootW(pszPath : LPCWSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsRootW}
function PathIsRoot(pszPath : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsRoot}
function PathIsSameRootA(pszPath1 : LPCSTR; pszPath2 : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsSameRootA}
function PathIsSameRootW(pszPath1 : LPCWSTR;
pszPath2 : LPCWSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsSameRootW}
function PathIsSameRoot(pszPath1 : LPCSTR; pszPath2 : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsSameRoot}
function PathIsUNCA(pszPath : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsUNCA}
function PathIsUNCW(pszPath : LPCWSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsUNCW}
function PathIsUNC(pszPath : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsUNC}
{$IFDEF SST_SHLWAPIVER5PT0}
{$IFNDEF SST_NOINCLUDESSTDYNSHLWAPI}
function PathIsNetworkPathA(pszPath : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsLFNFileSpecA}
function PathIsNetworkPathW(pszPath : LPCWSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsLFNFileSpecA}
function PathIsNetworkPath(pszPath : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsLFNFileSpec}
{$ENDIF}
{$ENDIF}
function PathIsUNCServerA(pszPath : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsUNCServerA}
function PathIsUNCServerW(pszPath : LPCWSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsUNCServerW}
function PathIsUNCServer(pszPath : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsUNCServer}
function PathIsUNCServerShareA(pszPath : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsUNCServerShareA}
function PathIsUNCServerShareW(pszPath : LPCWSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsUNCServerShareW}
function PathIsUNCServerShare(pszPath : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsUNCServerShare}
function PathIsContentTypeA(pszPath : LPCSTR;
pszContentType : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsContentTypeA}
function PathIsContentTypeW(pszPath : LPCWSTR;
pszContentType : LPCWSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsContentTypeW}
function PathIsContentType(pszPath : LPCSTR;
pszContentType : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsContentType}
function PathIsURLA(pszPath : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsURLA}
function PathIsURLW(pszPath : LPCWSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsURLW}
function PathIsURL(pszPath : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathIsURL}
function PathMakePrettyA(pszPath : LPSTR) : BOOL; stdcall;
{$EXTERNALSYM PathMakePrettyA}
function PathMakePrettyW(pszPath : LPWSTR) : BOOL; stdcall;
{$EXTERNALSYM PathMakePrettyW}
function PathMakePretty(pszPath : LPSTR) : BOOL; stdcall;
{$EXTERNALSYM PathMakePretty}
function PathMatchSpecA(pszFile : LPCSTR; pszSpec : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathMatchSpecA}
function PathMatchSpecW(pszFile : LPCWSTR; pszSpec : LPCWSTR) : BOOL; stdcall;
{$EXTERNALSYM PathMatchSpecW}
function PathMatchSpec(pszFile : LPCSTR; pszSpec : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathMatchSpec}
const PMSF_NORMAL = $00000000;
const PMSF_MULTIPLE = $00000001;
const PMSF_DONT_STRIP_SPACES = $00010000; //"modifies either of the above"
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
function PathMatchSpecExA(pszFile : LPCSTR; pszSpec : LPCSTR; dwFlags : DWORD) : BOOL; stdcall;
{$EXTERNALSYM PathMatchSpecExA}
function PathMatchSpecExW(pszFile : LPCWSTR; pszSpec : LPCWSTR; dwFlags : DWORD) : BOOL; stdcall;
{$EXTERNALSYM PathMatchSpecExW}
function PathMatchSpecEx(pszFile : LPCSTR; pszSpec : LPCSTR; dwFlags : DWORD) : BOOL; stdcall;
{$EXTERNALSYM PathMatchSpecEx}
{$ENDIF}
function PathParseIconLocationA(pszIconFile : LPSTR) : Integer; stdcall;
{$EXTERNALSYM PathParseIconLocationA}
function PathParseIconLocationW(pszIconFile : LPWSTR) : Integer; stdcall;
{$EXTERNALSYM PathParseIconLocationW}
function PathParseIconLocation(pszIconFile : LPSTR) : Integer; stdcall;
{$EXTERNALSYM PathParseIconLocation}
function PathQuoteSpacesA(lpsz : LPSTR) : BOOL; stdcall;
{$EXTERNALSYM PathQuoteSpacesA}
function PathQuoteSpacesW(lpsz : LPWSTR) : BOOL; stdcall;
{$EXTERNALSYM PathQuoteSpacesW}
function PathQuoteSpaces(lpsz : LPSTR) : BOOL; stdcall;
{$EXTERNALSYM PathQuoteSpaces}
function PathRelativePathToA(pszPath : LPSTR; pszFrom : LPCSTR;
dwAttrFrom : DWORD; pszTo : LPCSTR;
dwAttrTo : DWORD) : BOOL; stdcall;
{$EXTERNALSYM PathRelativePathToA}
function PathRelativePathToW(pszPath : LPWSTR; pszFrom : LPCWSTR;
dwAttrFrom : DWORD; pszTo : LPCWSTR;
dwAttrTo : DWORD) : BOOL; stdcall;
{$EXTERNALSYM PathRelativePathToW}
function PathRelativePathTo(pszPath : LPSTR; pszFrom : LPCSTR;
dwAttrFrom : DWORD; pszTo : LPCSTR;
dwAttrTo : DWORD) : BOOL; stdcall;
{$EXTERNALSYM PathRelativePathTo}
procedure PathRemoveArgsA(pszPath : LPSTR); stdcall;
{$EXTERNALSYM PathRemoveArgsA}
procedure PathRemoveArgsW(pszPath : LPWSTR); stdcall;
{$EXTERNALSYM PathRemoveArgsW}
procedure PathRemoveArgs(pszPath : LPSTR); stdcall;
{$EXTERNALSYM PathRemoveArgs}
function PathRemoveBackslashA(pszPath : LPSTR) : LPSTR; stdcall;
{$EXTERNALSYM PathRemoveBackslashA}
function PathRemoveBackslashW(pszPath : LPWSTR) : LPWSTR; stdcall;
{$EXTERNALSYM PathRemoveBackslashW}
function PathRemoveBackslash(pszPath : LPSTR) : LPSTR; stdcall;
{$EXTERNALSYM PathRemoveBackslash}
procedure PathRemoveBlanksA(pszPath : LPSTR); stdcall;
{$EXTERNALSYM PathRemoveBlanksA}
procedure PathRemoveBlanksW(pszPath : LPWSTR); stdcall;
{$EXTERNALSYM PathRemoveBlanksW}
procedure PathRemoveBlanks(pszPath : LPSTR); stdcall;
{$EXTERNALSYM PathRemoveBlanks}
procedure PathRemoveExtensionA(pszPath : LPSTR); stdcall;
{$EXTERNALSYM PathRemoveExtensionA}
procedure PathRemoveExtensionW(pszPath : LPWSTR); stdcall;
{$EXTERNALSYM PathRemoveExtensionW}
procedure PathRemoveExtension(pszPath : LPSTR); stdcall;
{$EXTERNALSYM PathRemoveExtension}
function PathRemoveFileSpecA(pszPath : LPSTR) : BOOL; stdcall;
{$EXTERNALSYM PathRemoveFileSpecA}
function PathRemoveFileSpecW(pszPath : LPWSTR) : BOOL; stdcall;
{$EXTERNALSYM PathRemoveFileSpecW}
function PathRemoveFileSpec(pszPath : LPSTR) : BOOL; stdcall;
{$EXTERNALSYM PathRemoveFileSpec}
function PathRenameExtensionA(pszPath : LPSTR; pszExt : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathRenameExtensionA}
function PathRenameExtensionW(pszPath : LPWSTR; pszExt : LPCWSTR) : BOOL; stdcall;
{$EXTERNALSYM PathRenameExtensionW}
function PathRenameExtension(pszPath : LPSTR; pszExt : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathRenameExtension}
function PathSearchAndQualifyA(pszPath : LPCSTR; pszBuf : LPSTR;
cchBuf : UINT) : BOOL; stdcall;
{$EXTERNALSYM PathSearchAndQualifyA}
function PathSearchAndQualifyW(pszPath : LPCWSTR; pszBuf : LPWSTR;
cchBuf : UINT) : BOOL; stdcall;
{$EXTERNALSYM PathSearchAndQualifyW}
function PathSearchAndQualify(pszPath : LPCSTR; pszBuf : LPSTR;
cchBuf : UINT) : BOOL; stdcall;
{$EXTERNALSYM PathSearchAndQualify}
procedure PathSetDlgItemPathA(hDlg : HWND; id : Integer;
pszPath : LPCSTR); stdcall;
{$EXTERNALSYM PathSetDlgItemPathA}
procedure PathSetDlgItemPathW(hDlg : HWND; id : Integer;
pszPath : LPCWSTR); stdcall;
{$EXTERNALSYM PathSetDlgItemPathW}
procedure PathSetDlgItemPath(hDlg : HWND; id : Integer;
pszPath : LPCSTR); stdcall;
{$EXTERNALSYM PathSetDlgItemPath}
function PathSkipRootA(pszPath : LPCSTR) : LPSTR; stdcall;
{$EXTERNALSYM PathSkipRootA}
function PathSkipRootW(pszPath : LPCWSTR) : LPWSTR; stdcall;
{$EXTERNALSYM PathSkipRootW}
function PathSkipRoot(pszPath : LPCSTR) : LPSTR; stdcall;
{$EXTERNALSYM PathSkipRoot}
procedure PathStripPathA(pszPath : LPSTR); stdcall;
{$EXTERNALSYM PathStripPathA}
procedure PathStripPathW(pszPath : LPWSTR); stdcall;
{$EXTERNALSYM PathStripPathW}
procedure PathStripPath(pszPath : LPSTR); stdcall;
{$EXTERNALSYM PathStripPath}
function PathStripToRootA(pszPath : LPSTR) : BOOL; stdcall;
{$EXTERNALSYM PathStripToRootA}
function PathStripToRootW(pszPath : LPWSTR) : BOOL; stdcall;
{$EXTERNALSYM PathStripToRootW}
function PathStripToRoot(pszPath : LPSTR) : BOOL; stdcall;
{$EXTERNALSYM PathStripToRoot}
function PathUnquoteSpacesA(lpsz : LPSTR) : BOOL; stdcall;
{$EXTERNALSYM PathUnquoteSpacesA}
function PathUnquoteSpacesW(lpsz : LPWSTR) : BOOL; stdcall;
{$EXTERNALSYM PathUnquoteSpacesW}
function PathUnquoteSpaces(lpsz : LPSTR) : BOOL; stdcall;
{$EXTERNALSYM PathUnquoteSpaces}
function PathMakeSystemFolderA(pszPath : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathMakeSystemFolderA}
function PathMakeSystemFolderW(pszPath : LPCWSTR) : BOOL; stdcall;
{$EXTERNALSYM PathMakeSystemFolderW}
function PathMakeSystemFolder(pszPath : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathMakeSystemFolder}
function PathUnmakeSystemFolderA(pszPath : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathUnmakeSystemFolderA}
function PathUnmakeSystemFolderW(pszPath : LPCWSTR) : BOOL; stdcall;
{$EXTERNALSYM PathUnmakeSystemFolderW}
function PathUnmakeSystemFolder(pszPath : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM PathUnmakeSystemFolder}
function PathIsSystemFolderA(pszPath : LPCSTR; dwAttrb : DWORD) : BOOL; stdcall;
{$EXTERNALSYM PathIsSystemFolderA}
function PathIsSystemFolderW(pszPath : LPCWSTR; dwAttrb : DWORD) : BOOL; stdcall;
{$EXTERNALSYM PathIsSystemFolderW}
function PathIsSystemFolder(pszPath : LPCSTR; dwAttrb : DWORD) : BOOL; stdcall;
{$EXTERNALSYM PathIsSystemFolder}
{$IFDEF SST_SHLWAPIVER5PT0}
procedure PathUndecorateA(pszPath : LPSTR); stdcall;
{$EXTERNALSYM PathUndecorateA}
procedure PathUndecorateW(pszPath : LPWSTR); stdcall;
{$EXTERNALSYM PathUndecorateW}
procedure PathUndecorate(pszPath : LPSTR); stdcall;
{$EXTERNALSYM PathUndecorate}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function PathUnExpandEnvStringsA(pszPath : LPCSTR; pszBuf : LPSTR; cchBuf : UINT) : BOOL; stdcall;
{$EXTERNALSYM PathUnExpandEnvStringsA}
function PathUnExpandEnvStringsW(pszPath : LPCWSTR; pszBuf : LPWSTR; cchBuf : UINT) : BOOL; stdcall;
{$EXTERNALSYM PathUnExpandEnvStringsW}
function PathUnExpandEnvStrings(pszPath : LPCSTR; pszBuf : LPSTR; cchBuf : UINT) : BOOL; stdcall;
{$EXTERNALSYM PathUnExpandEnvStrings}
{$ENDIF}
//UrlCanonicalize flags
const URL_UNESCAPE = $10000000;
{$EXTERNALSYM URL_UNESCAPE}
const URL_ESCAPE_UNSAFE = $20000000;
{$EXTERNALSYM URL_ESCAPE_UNSAFE}
const URL_PLUGGABLE_PROTOCOL = $40000000;
{$EXTERNALSYM URL_PLUGGABLE_PROTOCOL}
const URL_WININET_COMPATIBILITY = $80000000;
{$EXTERNALSYM URL_WININET_COMPATIBILITY}
const URL_DONT_ESCAPE_EXTRA_INFO = $02000000;
{$EXTERNALSYM URL_DONT_ESCAPE_EXTRA_INFO}
const URL_DONT_UNESCAPE_EXTRA_INFO = URL_DONT_ESCAPE_EXTRA_INFO;
{$EXTERNALSYM URL_DONT_UNESCAPE_EXTRA_INFO}
const URL_BROWSER_MODE = URL_DONT_ESCAPE_EXTRA_INFO;
{$EXTERNALSYM URL_BROWSER_MODE}
const URL_ESCAPE_SPACES_ONLY = $04000000;
{$EXTERNALSYM URL_ESCAPE_SPACES_ONLY}
const URL_DONT_SIMPLIFY = $08000000;
{$EXTERNALSYM URL_DONT_SIMPLIFY}
const URL_NO_META = URL_DONT_SIMPLIFY;
{$EXTERNALSYM URL_NO_META}
const URL_UNESCAPE_INPLACE = $00100000;
{$EXTERNALSYM URL_UNESCAPE_INPLACE}
const URL_CONVERT_IF_DOSPATH = $00200000;
{$EXTERNALSYM URL_CONVERT_IF_DOSPATH}
const URL_UNESCAPE_HIGH_ANSI_ONLY = $00400000;
{$EXTERNALSYM URL_UNESCAPE_HIGH_ANSI_ONLY}
const URL_INTERNAL_PATH = $00800000; //"Will escape #'s in paths"
{$EXTERNALSYM URL_INTERNAL_PATH}
const URL_FILE_USE_PATHURL = $00010000;
{$EXTERNALSYM URL_FILE_USE_PATHURL}
const URL_DONT_UNESCAPE = $00020000; //"Do not unescape the path/url at all"
{$EXTERNALSYM URL_DONT_UNESCAPE}
const URL_ESCAPE_PERCENT = $00001000;
{$EXTERNALSYM URL_ESCAPE_PERCENT}
const URL_ESCAPE_SEGMENT_ONLY = $00002000; //"Treat the entire URL param as one URL segment."
{$EXTERNALSYM URL_ESCAPE_SEGMENT_ONLY}
const URL_PARTFLAG_KEEPSCHEME = $00000001;
{$EXTERNALSYM URL_PARTFLAG_KEEPSCHEME}
const URL_APPLY_DEFAULT = $00000001;
{$EXTERNALSYM URL_APPLY_DEFAULT}
const URL_APPLY_GUESSSCHEME = $00000002;
{$EXTERNALSYM URL_APPLY_GUESSSCHEME}
const URL_APPLY_GUESSFILE = $00000004;
{$EXTERNALSYM URL_APPLY_GUESSFILE}
const URL_APPLY_FORCEAPPLY = $00000008;
{$EXTERNALSYM URL_APPLY_FORCEAPPLY}
{$IFDEF SST_SHLWAPIVER5PT0}
function UrlCompareA(psz1 : LPCSTR; psz2 : LPCSTR; fIgnoreSlash : BOOL) : Integer; stdcall;
{$EXTERNALSYM UrlCompareA}
function UrlCompareW(psz1 : LPCWSTR; psz2 : LPCWSTR; fIgnoreSlash : BOOL) : Integer; stdcall;
{$EXTERNALSYM UrlCompareW}
function UrlCompare(psz1 : LPCSTR; psz2 : LPCSTR; fIgnoreSlash : BOOL) : Integer; stdcall;
{$EXTERNALSYM UrlCompare}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function UrlCombineA(pszBase : LPCSTR; pszRelative : LPCSTR; pszCombined : LPSTR;
pcchCombined : LPDWORD; dwFlags : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM UrlCombineA}
function UrlCombineW(pszBase : LPCWSTR; pszRelative : LPCWSTR; pszCombined : LPWSTR;
pcchCombined : LPDWORD; dwFlags : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM UrlCombineW}
function UrlCombine(pszBase : LPCSTR; pszRelative : LPCSTR; pszCombined : LPSTR;
pcchCombined : LPDWORD; dwFlags : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM UrlCombine}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function UrlCanonicalizeA(pszUrl : LPCSTR; pszCanonicalized : LPSTR;
pcchCanonicalized : LPDWORD; dwFlags : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM UrlCanonicalizeA}
function UrlCanonicalizeW(pszUrl : LPCWSTR; pszCanonicalized : LPWSTR;
pcchCanonicalized : LPDWORD; dwFlags : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM UrlCanonicalizeW}
function UrlCanonicalize(pszUrl : LPCSTR; pszCanonicalized : LPSTR;
pcchCanonicalized : LPDWORD; dwFlags : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM UrlCanonicalize}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function UrlIsOpaqueA(pszURL : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM UrlIsOpaqueA}
function UrlIsOpaqueW(pszURL : LPCWSTR) : BOOL; stdcall;
{$EXTERNALSYM UrlIsOpaqueW}
function UrlIsOpaque(pszURL : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM UrlIsOpaque}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function UrlIsNoHistoryA(pszURL : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM UrlIsNoHistoryA}
function UrlIsNoHistoryW(pszURL : LPCWSTR) : BOOL; stdcall;
{$EXTERNALSYM UrlIsNoHistoryW}
function UrlIsNoHistory(pszURL : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM UrlIsNoHistory}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
//Macros ported as functions (see below and "implementation" at bottom of unit)
//#define UrlIsFileUrlA(pszURL) UrlIsA(pszURL, URLIS_FILEURL)
//#define UrlIsFileUrlW(pszURL) UrlIsW(pszURL, URLIS_FILEURL)
//#define UrlIsFileUrl(pszURL) UrlIsA(pszURL, URLIS_FILEURL)
function UrlIsFileUrlA(pszUrl : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM UrlIsFileUrlA}
function UrlIsFileUrlW(pszUrl : LPCWSTR) : BOOL; stdcall;
{$EXTERNALSYM UrlIsFileUrlW}
function UrlIsFileUrl(pszUrl : LPCSTR) : BOOL; stdcall;
{$EXTERNALSYM UrlIsFileUrl}
function UrlIsA(pszUrl : LPCSTR; fisURL : DWORD) : BOOL; stdcall;
{$EXTERNALSYM UrlIsA}
function UrlIsW(pszUrl : LPCWSTR; fisURL : DWORD) : BOOL; stdcall;
{$EXTERNALSYM UrlIsW}
function UrlIs(pszUrl : LPCSTR; fisURL : DWORD) : BOOL; stdcall;
{$EXTERNALSYM UrlIs}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function UrlGetLocationA(psz1 : LPCSTR) : LPCSTR; stdcall;
{$EXTERNALSYM UrlGetLocationA}
function UrlGetLocationW(psz1 : LPCWSTR) : LPCWSTR; stdcall;
{$EXTERNALSYM UrlGetLocationW}
function UrlGetLocation(psz1 : LPCSTR) : LPCSTR; stdcall;
{$EXTERNALSYM UrlGetLocation}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function UrlUnescapeA(pszUrl : LPSTR; pszUnescaped : LPSTR; pcchUnescaped : LPDWORD; dwFlags : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM UrlUnescapeA}
function UrlUnescapeW(pszUrl : LPWSTR; pszUnescaped : LPWSTR; pcchUnescaped : LPDWORD; dwFlags : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM UrlUnescapeW}
function UrlUnescape(pszUrl : LPSTR; pszUnescaped : LPSTR; pcchUnescaped : LPDWORD; dwFlags : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM UrlUnescape}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function UrlEscapeA(pszUrl : LPCSTR; pszEscaped : LPSTR; pcchEscaped : LPDWORD; dwFlags : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM UrlEscapeA}
function UrlEscapeW(pszUrl : LPCWSTR; pszEscaped : LPWSTR; pcchEscaped : LPDWORD; dwFlags : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM UrlEscapeW}
function UrlEscape(pszUrl : LPCSTR; pszEscaped : LPSTR; pcchEscaped : LPDWORD; dwFlags : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM UrlEscape}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function UrlCreateFromPathA(pszPath : LPCSTR; pszUrl : LPSTR; pcchUrl : LPDWORD; dwFlags : LPDWORD) : HRESULT; stdcall;
{$EXTERNALSYM UrlCreateFromPathA}
function UrlCreateFromPathW(pszPath : LPCTSTR; pszUrl : LPWSTR; pcchUrl : LPDWORD; dwFlags : LPDWORD) : HRESULT; stdcall;
{$EXTERNALSYM UrlCreateFromPathW}
function UrlCreateFromPath(pszPath : LPCSTR; pszUrl : LPSTR; pcchUrl : LPDWORD; dwFlags : LPDWORD) : HRESULT; stdcall;
{$EXTERNALSYM UrlCreateFromPath}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
{$IFNDEF SST_NOINCLUDESSTDYNSHLWAPI}
function PathCreateFromUrlA(pszUrl : LPCSTR; pszPath : LPSTR; pcchPath : LPDWORD; dwFlags : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM PathCreateFromUrlA}
function PathCreateFromUrlW(pszUrl : LPCWSTR; pszPath : LPWSTR; pcchPath : LPDWORD; dwFlags : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM PathCreateFromUrlW}
function PathCreateFromUrl(pszUrl : LPCSTR; pszPath : LPSTR; pcchPath : LPDWORD; dwFlags : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM PathCreateFromUrl}
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
function PathCreateFromUrlAlloc(pszIn : LPCWSTR; VAR ppszOut : LPWSTR; dwFlags : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM PathCreateFromUrlAlloc}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function UrlHashA(pszUrl : LPCSTR; pbHash : Pointer; cbHash : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM UrlHashA}
function UrlHashW(pszUrl : LPCWSTR; pbHash : Pointer; cbHash : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM UrlHashW}
function UrlHash(pszUrl : LPCSTR; pbHash : Pointer; cbHash : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM UrlHash}
{$ENDIF}
//UrlGetPart flags
//(use Ord(URL_PART_XXX)
//to pass desired to second to
//last param)
type URL_PART = (URL_PART_NONE,
URL_PART_SCHEME,
URL_PART_HOSTNAME,
URL_PART_USERNAME,
URL_PART_PASSWORD,
URL_PART_PORT,
URL_PART_QUERY);
type TUrlPart = URL_PART;
{$EXTERNALSYM URL_PART}
{$IFDEF SST_SHLWAPIVER5PT0}
function UrlGetPartA(pszIn : LPCSTR; pszOut : LPSTR; pcchOut : LPDWORD; dwPart : DWORD; dwFlags : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM UrlGetPartA}
function UrlGetPartW(pszIn : LPCWSTR; pszOut : LPWSTR; pcchOut : LPDWORD; dwPart : DWORD; dwFlags : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM UrlGetPartW}
function UrlGetPart(pszIn : LPCSTR; pszOut : LPSTR; pcchOut : LPDWORD; dwPart : DWORD; dwFlags : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM UrlGetPart}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function UrlApplySchemeA(pszIn : LPCSTR; pszOut : LPSTR; pcchOut : LPDWORD; dwFlags : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM UrlApplySchemeA}
function UrlApplySchemeW(pszIn : LPCWSTR; pszOut : LPWSTR; pcchOut : LPDWORD; dwFlags : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM UrlApplySchemeW}
function UrlApplyScheme(pszIn : LPCSTR; pszOut : LPSTR; pcchOut : LPDWORD; dwFlags : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM UrlApplyScheme}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function HashData(pbData : Pointer; cbData : DWORD; pbHash : Pointer; cbHash : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM HashData}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
//{$IFDEF SST_SHLWAPIVER5PT0}
function UrlFixupW(pszUrl : LPCWSTR; pszOut : LPWSTR; cchOut : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM UrlFixupW}
{$ENDIF}
//Possible values for
//PARSEDURLA.nScheme & PARSEDURLW.nScheme
const URL_SCHEME_INVALID = -1;
const URL_SCHEME_UNKNOWN = 0;
const URL_SCHEME_FTP = 1;
const URL_SCHEME_HTTP = 2;
const URL_SCHEME_GOPHER = 3;
const URL_SCHEME_MAILTO = 4;
const URL_SCHEME_NEWS = 5;
const URL_SCHEME_NNTP = 6;
const URL_SCHEME_TELNET = 7;
const URL_SCHEME_WAIS = 8;
const URL_SCHEME_FILE = 9;
const URL_SCHEME_MK = 10;
const URL_SCHEME_HTTPS = 11;
const URL_SCHEME_SHELL = 12;
const URL_SCHEME_SNEWS = 13;
const URL_SCHEME_LOCAL = 14;
const URL_SCHEME_JAVASCRIPT = 15;
const URL_SCHEME_VBSCRIPT = 16;
const URL_SCHEME_ABOUT = 17;
const URL_SCHEME_RES = 18;
//As of IE 6.0
const URL_SCHEME_MSSHELLROOTED = 19;
const URL_SCHEME_MSSHELLIDLIST = 20;
const URL_SCHEME_MSHELP = 21;
//As of IE 7.0
const URL_SCHEME_MSSHELLDEVICE = 22;
const URL_SCHEME_WILDCARD = 23;
//END as of IE 7.0
const URL_SCHEME_SEARCH_MS = 24;
const URL_SCHEME_SEARCH = 25;
const URL_SCHEME_MAXVALUE = 26;
type URL_SCHEME = INTEGER;
{$EXTERNALSYM URL_SCHEME}
type tagPARSEDURLA = RECORD
cbSize : DWORD;
pszProtocol : LPCSTR;
cchProtocol : UINT;
pszSuffix : LPCSTR;
cchSuffix : UINT;
nScheme : UINT; //"URL_SCHEME" value
END;
type PARSEDURLA = tagPARSEDURLA;
type PPARSEDURLA = ^PARSEDURLA;
type tagPARSEDURLW = RECORD
cbSize : DWORD;
pszProtocol : LPCWSTR;
cchProtocol : UINT;
pszSuffix : LPCWSTR;
cchSuffix : UINT;
nScheme : UINT; //"URL_SCHEME" value
END;
type PARSEDURLW = tagPARSEDURLW;
type PPARSEDURLW = ^PARSEDURLW;
type tagPARSEDURL = tagPARSEDURLA;
type PARSEDURL = tagPARSEDURL;
type PPARSEDURL = ^PARSEDURL;
{$IFDEF SST_SHLWAPIVER5PT0}
//{$IFDEF SST_SHLWAPIVER6PT0VISTA}
function ParseURLA(pcszURL : LPCSTR; VAR ppu : PARSEDURLA) : HRESULT; stdcall;
{$EXTERNALSYM ParseURLA}
function ParseURLW(pcszURL : LPCWSTR; VAR ppu : PARSEDURLW) : HRESULT; stdcall;
{$EXTERNALSYM ParseURLW}
function ParseURL(pcszURL : LPCSTR; VAR ppu : PARSEDURL) : HRESULT; stdcall;
{$EXTERNALSYM ParseURL}
{$ENDIF}
//
//=============== Registry Routines ===================================
//
// SHDeleteEmptyKey mimics RegDeleteKey as it behaves on NT.
// SHDeleteKey mimics RegDeleteKey as it behaves on Win95.
function SHDeleteEmptyKeyA(hkey : HKEY; pszSubKey : LPCSTR) : DWORD; stdcall;
{$EXTERNALSYM SHDeleteEmptyKeyA}
function SHDeleteEmptyKeyW(hkey : HKEY; pszSubKey : LPCWSTR) : DWORD; stdcall;
{$EXTERNALSYM SHDeleteEmptyKeyW}
function SHDeleteEmptyKey(hkey : HKEY; pszSubKey : LPCSTR) : DWORD; stdcall;
{$EXTERNALSYM SHDeleteEmptyKey}
function SHDeleteKeyA(hkey : HKEY; pszSubKey : LPCSTR) : DWORD; stdcall;
{$EXTERNALSYM SHDeleteKeyA}
function SHDeleteKeyW(hkey : HKEY; pszSubKey : LPCWSTR) : DWORD; stdcall;
{$EXTERNALSYM SHDeleteKeyW}
function SHDeleteKey(hkey : HKEY; pszSubKey : LPCSTR) : DWORD; stdcall;
{$EXTERNALSYM SHDeleteKey}
{$IFDEF SST_SHLWAPIVER5PT0}
function SHRegDuplicateHKey(keyh : HKEY) : HKEY; stdcall;
{$EXTERNALSYM SHRegDuplicateHKey}
{$ENDIF}
//"These functions open the key, get/set/delete the value, then close
// the key."
function SHDeleteValueA(hkey : HKEY; pszSubKey : LPCSTR;
pszValue : LPCSTR) : DWORD; stdcall;
{$EXTERNALSYM SHDeleteValueA}
function SHDeleteValueW(hkey : HKEY; pszSubKey : LPCWSTR;
pszValue : LPCWSTR) : DWORD; stdcall;
{$EXTERNALSYM SHDeleteValueW}
function SHDeleteValue(hkey : HKEY; pszSubKey : LPCSTR;
pszValue : LPCSTR) : DWORD; stdcall;
{$EXTERNALSYM SHDeleteValue}
function SHGetValueA(hkey : HKEY; pszSubKey : LPCSTR; pszValue : LPCSTR;
pdwType : LPDWORD; pvData : POINTER;
pcbData : LPDWORD) : DWORD; stdcall;
{$EXTERNALSYM SHGetValueA}
function SHGetValueW(hkey : HKEY; pszSubKey: LPCWSTR; pszValue : LPCWSTR;
pdwType : LPDWORD; pvData : POINTER;
pcbData : LPDWORD) : DWORD; stdcall;
{$EXTERNALSYM SHGetValueW}
function SHGetValue(hkey : HKEY; pszSubKey : LPCSTR; pszValue : LPCSTR;
pdwType : LPDWORD; pvData : POINTER;
pcbData : LPDWORD) : DWORD; stdcall;
{$EXTERNALSYM SHGetValue}
function SHSetValueA(hkey : HKEY; pszSubKey : LPCSTR; pszValue : LPCSTR;
dwType : DWORD; pvData : LPCVOID;
cbData : DWORD) : DWORD; stdcall;
{$EXTERNALSYM SHSetValueA}
function SHSetValueW(hkey : HKEY; pszSubKey : LPCWSTR; pszValue : LPCWSTR;
dwType: DWORD; pvData : LPCVOID;
cbData : DWORD) : DWORD; stdcall;
{$EXTERNALSYM SHSetValueW}
function SHSetValue(hkey : HKEY; pszSubKey : LPCSTR; pszValue : LPCSTR;
dwType : DWORD; pvData : LPCVOID;
cbData : DWORD) : DWORD; stdcall;
{$EXTERNALSYM SHSetValue}
const SRRF_RT_REG_NONE = $00000001; //"restrict type to REG_NONE (other data types will not return ERROR_SUCCESS)"
const SRRF_RT_REG_SZ = $00000002; //"restrict type to REG_SZ (other data types will not return ERROR_SUCCESS) (automatically converts REG_EXPAND_SZ to REG_SZ unless SRRF_NOEXPAND is specified)"
const SRRF_RT_REG_EXPAND_SZ = $00000004; //"restrict type to REG_EXPAND_SZ (other data types will not return ERROR_SUCCESS) (must specify SRRF_NOEXPAND or SHRegGetValue will fail with ERROR_INVALID_PARAMETER)"
const SRRF_RT_REG_BINARY = $00000008; //"restrict type to REG_BINARY (other data types will not return ERROR_SUCCESS)"
const SRRF_RT_REG_DWORD = $00000010; //"restrict type to REG_DWORD (other data types will not return ERROR_SUCCESS)"
const SRRF_RT_REG_MULTI_SZ = $00000020; //"restrict type to REG_MULTI_SZ (other data types will not return ERROR_SUCCESS)"
const SRRF_RT_REG_QWORD = $00000040; //"restrict type to REG_QWORD (other data types will not return ERROR_SUCCESS)"
const SRRF_RT_DWORD = (SRRF_RT_REG_BINARY OR SRRF_RT_REG_DWORD); //"restrict type to *32-bit* SRRF_RT_REG_BINARY or SRRF_RT_REG_DWORD (other data types will not return ERROR_SUCCESS)"
const SRRF_RT_QWORD = (SRRF_RT_REG_BINARY OR SRRF_RT_REG_QWORD); //"restrict type to *64-bit* SRRF_RT_REG_BINARY or SRRF_RT_REG_DWORD (other data types will not return ERROR_SUCCESS)"
const SRRF_RT_ANY = $0000FFFF; //"no type restriction"
const SRRF_RM_ANY = $00000000; //"no mode restriction (default is to allow any mode)"
const SRRF_RM_NORMAL = $00010000; //"restrict system startup mode to "normal boot" (other startup modes will not return ERROR_SUCCESS)"
const SRRF_RM_SAFE = $00020000; //"restrict system startup mode to "safe mode" (other startup modes will not return ERROR_SUCCESS)"
const SRRF_RM_SAFENETWORK = $00040000; //"restrict system startup mode to "safe mode with networking" (other startup modes will not return ERROR_SUCCESS)"
const SRRF_NOEXPAND = $10000000; //"do not automatically expand environment strings if value is of type REG_EXPAND_SZ"
const SRRF_ZEROONFAILURE = $20000000; //"if pvData is not NULL, set content to all zeros on failure"
const SRRF_NOVIRT = $40000000; //"if the requested key is virtualized, then fail with ERROR_FILE_NOT_FOUND"
type SRRF = Integer;
{$IFDEF SST_SHLWAPIVER6PT0W2003SP2}
function SHRegGetValueA(keyh : HKEY; pszSubKey : LPCSTR; pszValue : LPCSTR;
srrfFlags : SRRF; pdwType : LPDWORD; pvData : LPVOID; pcbData : LPDWORD) : LSTATUS; stdcall;
{$EXTERNALSYM SHRegGetValueA}
function SHRegGetValueW(keyh : HKEY; pszSubKey : LPCWSTR; pszValue : LPCWSTR;
srrfFlags : SRRF; pdwType : LPDWORD; pvData : LPVOID; pcbData : LPDWORD) : LSTATUS; stdcall;
{$EXTERNALSYM SHRegGetValueW}
function SHRegGetValue(keyh : HKEY; pszSubKey : LPCSTR; pszValue : LPCSTR;
srrfFlags : SRRF; pdwType : LPDWORD; pvData : LPVOID; pcbData : LPDWORD) : LSTATUS; stdcall;
{$EXTERNALSYM SHRegGetValue}
{$ENDIF}
//"These functions work just like RegQueryValueEx, except if the
// data type is REG_EXPAND_SZ, then these will go ahead and expand
// out the string. *pdwType will always be massaged to REG_SZ
// if this happens. REG_SZ values are also guaranteed to be null
// terminated."
function SHQueryValueExA(hkey : HKEY; pszValue : LPCSTR; lpdwReserved : LPDWORD;
pdwType : LPDWORD; pvData : LPVOID;
pcbData : LPDWORD) : DWORD; stdcall;
{$EXTERNALSYM SHQueryValueExA}
function SHQueryValueExW(hkey : HKEY; pszValue : LPCWSTR; pdwReserved : LPDWORD;
pdwType : LPDWORD; pvData : LPVOID;
pcbData : LPDWORD) : DWORD; stdcall;
{$EXTERNALSYM SHQueryValueExW}
function SHQueryValueEx(hkey : HKEY; pszValue : LPCSTR; lpdwReserved : LPDWORD;
pdwType : LPDWORD; pvData : LPVOID;
pcbData : LPDWORD) : DWORD; stdcall;
{$EXTERNALSYM SHQueryValueEx}
// Enumeration functions support.
function SHEnumKeyExA(hkey : HKEY; dwIndex : DWORD; pszName : LPSTR;
pcchName : LPDWORD) : Integer; stdcall;
{$EXTERNALSYM SHEnumKeyExA}
function SHEnumKeyExW(hkey : HKEY; dwIndex : DWORD; pszName : LPWSTR;
pcchName : LPDWORD) : Integer; stdcall;
{$EXTERNALSYM SHEnumKeyExW}
function SHEnumKeyEx(hkey : HKEY; dwIndex : DWORD; pszName : LPSTR;
pcchName : LPDWORD) : Integer; stdcall;
{$EXTERNALSYM SHEnumKeyEx}
function SHEnumValueA(hkey : HKEY; dwIndex : HKEY; pszValueName : LPSTR;
pcchValueName : LPDWORD; pdwType : LPDWORD;
pvData : LPVOID; pcbData : LPDWORD) : Integer; stdcall;
{$EXTERNALSYM SHEnumValueA}
function SHEnumValueW(hkey : HKEY; dwIndex : DWORD; pszValueName : LPWSTR;
pcchValueName : LPDWORD; pdwType : LPDWORD;
pvData : LPVOID; pcbData : LPDWORD) : Integer; stdcall;
{$EXTERNALSYM SHEnumValueW}
function SHEnumValue(hkey : HKEY; dwIndex : HKEY; pszValueName : LPSTR;
pcchValueName : LPDWORD; pdwType : LPDWORD;
pvData : LPVOID; pcbData : LPDWORD) : Integer; stdcall;
{$EXTERNALSYM SHEnumValue}
function SHQueryInfoKeyA(hkey : HKEY; pcSubKeys : LPDWORD;
pcchMaxSubKeyLen : LPDWORD; pcValues : LPDWORD;
pcchMaxValueNameLen : LPDWORD) : Integer; stdcall;
{$EXTERNALSYM SHQueryInfoKeyA}
function SHQueryInfoKeyW(hkey : HKEY; pcSubKeys : LPDWORD;
pcchMaxSubKeyLen : LPDWORD; pcValues : LPDWORD;
pcchMaxValueNameLen : LPDWORD) : Integer; stdcall;
{$EXTERNALSYM SHQueryInfoKeyW}
function SHQueryInfoKey(hkey : HKEY; pcSubKeys : LPDWORD;
pcchMaxSubKeyLen : LPDWORD; pcValues : LPDWORD;
pcchMaxValueNameLen : LPDWORD) : Integer; stdcall;
{$EXTERNALSYM SHQueryInfoKey}
{$IFDEF SST_SHLWAPIVER5PT0}
function SHCopyKeyA(hkeySrc : HKEY; szSrcSubKey : LPCSTR; hkeyDest : HKEY; fReserved : DWORD) : LSTATUS; stdcall;
{$EXTERNALSYM SHCopyKeyA}
function SHCopyKeyW(hkeySrc : HKEY; szSrcSubKey : LPCWSTR; hkeyDest : HKEY; fReserved : DWORD) : LSTATUS; stdcall;
{$EXTERNALSYM SHCopyKeyW}
function SHCopyKey(hkeySrc : HKEY; szSrcSubKey : LPCSTR; hkeyDest : HKEY; fReserved : DWORD) : LSTATUS; stdcall;
{$EXTERNALSYM SHCopyKey}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function SHRegGetPathA(keyh : HKEY; pcszSubKey : LPCSTR; pszPath : LPSTR; dwFlags : DWORD) : LSTATUS; stdcall;
{$EXTERNALSYM SHRegGetPathA}
function SHRegGetPathW(keyh : HKEY; pcszSubKey : LPCWSTR; pszPath : LPWSTR; dwFlags : DWORD) : LSTATUS; stdcall;
{$EXTERNALSYM SHRegGetPathW}
function SHRegGetPath(keyh : HKEY; pcszSubKey : LPCSTR; pszPath : LPSTR; dwFlags : DWORD) : LSTATUS; stdcall;
{$EXTERNALSYM SHRegGetPath}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function SHRegSetPathA(keyh : HKEY; pcszSubKey : LPCSTR; pcszValue : LPCSTR;
pcszPath : LPCSTR; dwFlags : DWORD) : LSTATUS; stdcall;
{$EXTERNALSYM SHRegSetPathA}
function SHRegSetPathW(keyh : HKEY; pcszSubKey : LPCWSTR; pcszValue : LPCWSTR;
pcszPath : LPCWSTR; dwFlags : DWORD) : LSTATUS; stdcall;
{$EXTERNALSYM SHRegSetPathW}
function SHRegSetPath(keyh : HKEY; pcszSubKey : LPCSTR; pcszValue : LPCSTR;
pcszPath : LPCSTR; dwFlags : DWORD) : LSTATUS; stdcall;
{$EXTERNALSYM SHRegSetPath}
{$ENDIF}
//////////////////////////////////////////////
// User Specific Registry Access Functions
//////////////////////////////////////////////
function SHRegCreateUSKeyA(pszPath : LPCSTR; samDesired : REGSAM;
hRelativeUSKey : HUSKEY; phNewUSKey : PHUSKEY;
dwFlags : DWORD) : Integer; stdcall;
{$EXTERNALSYM SHRegCreateUSKeyA}
function SHRegCreateUSKeyW(pwzPath : LPCWSTR; samDesired : REGSAM;
hRelativeUSKey : HUSKEY; phNewUSKey : PHUSKEY;
dwFlags : DWORD) : Integer; stdcall;
{$EXTERNALSYM SHRegCreateUSKeyW}
function SHRegCreateUSKey(pszPath : LPCSTR; samDesired : REGSAM;
hRelativeUSKey : HUSKEY; phNewUSKey : PHUSKEY;
dwFlags : DWORD) : Integer; stdcall;
{$EXTERNALSYM SHRegCreateUSKey}
function SHRegOpenUSKeyA(pszPath : LPCSTR; samDesired : REGSAM;
hRelativeUSKey : HUSKEY; phNewUSKey : PHUSKEY;
fIgnoreHKCU : BOOL) : Integer; stdcall;
{$EXTERNALSYM SHRegOpenUSKeyA}
function SHRegOpenUSKeyW(pwzPath : LPCWSTR; samDesired : REGSAM;
hRelativeUSKey : HUSKEY; phNewUSKey : PHUSKEY;
fIgnoreHKCU : BOOL) : Integer; stdcall;
{$EXTERNALSYM SHRegOpenUSKeyW}
function SHRegOpenUSKey(pszPath : LPCSTR; samDesired : REGSAM;
hRelativeUSKey : HUSKEY; phNewUSKey : PHUSKEY;
fIgnoreHKCU : BOOL) : Integer; stdcall;
{$EXTERNALSYM SHRegOpenUSKey}
function SHRegQueryUSValueA(hUserKey : HUSKEY; pszValue : LPCSTR; pdwType : LPDWORD; pvData : LPVOID; pcbData : LPDWORD; fIgnoreHKCU : BOOL; pvDefaultData : LPVOID; dwDefaultDataSize : DWORD) : Integer; stdcall;
{$EXTERNALSYM SHRegQueryUSValueA}
function SHRegQueryUSValueW(hUserKey : HUSKEY; pwzValue : LPCWSTR; pdwType : LPDWORD; pvData : LPVOID; pcbData : LPDWORD; fIgnoreHKCU : BOOL; pvDefaultData : LPVOID; dwDefaultDataSize : DWORD) : Integer; stdcall;
{$EXTERNALSYM SHRegQueryUSValueW}
function SHRegQueryUSValue(hUserKey : HUSKEY; pszValue : LPCSTR; pdwType : LPDWORD; pvData : LPVOID; pcbData : LPDWORD; fIgnoreHKCU : BOOL; pvDefaultData : LPVOID; dwDefaultDataSize : DWORD) : Integer; stdcall;
{$EXTERNALSYM SHRegQueryUSValue}
function SHRegWriteUSValueA(hUserKey : HUSKEY; pszValue : LPCSTR; dwType : DWORD; pvData : LPVOID; cbData : DWORD; dwFlags : DWORD) : Integer; stdcall;
{$EXTERNALSYM SHRegWriteUSValueA}
function SHRegWriteUSValueW(hUserKey : HUSKEY; pwzValue : LPCWSTR; dwType : DWORD; pvData : LPVOID; cbData : DWORD; dwFlags : DWORD) : Integer; stdcall;
{$EXTERNALSYM SHRegWriteUSValueW}
function SHRegWriteUSValue(hUserKey : HUSKEY; pszValue : LPCSTR; dwType : DWORD; pvData : LPVOID; cbData : DWORD; dwFlags : DWORD) : Integer; stdcall;
{$EXTERNALSYM SHRegWriteUSValue}
function SHRegDeleteUSValueA(hUserKey : HUSKEY; pszValue : LPCSTR; delRegFlags : SHREGDEL_FLAGS) : Integer; stdcall;
{$EXTERNALSYM SHRegDeleteUSValueA}
function SHRegDeleteEmptyUSKeyW(hUserKey : HUSKEY; pwzSubKey : LPCWSTR; delRegFlags : SHREGDEL_FLAGS) : Integer; stdcall;
{$EXTERNALSYM SHRegDeleteEmptyUSKeyW}
function SHRegDeleteUSValue(hUserKey : HUSKEY; pszValue : LPCSTR; delRegFlags : SHREGDEL_FLAGS) : Integer; stdcall;
{$EXTERNALSYM SHRegDeleteUSValue}
function SHRegDeleteEmptyUSKeyA(hUserKey : HUSKEY; pszSubKey : LPCSTR; delRegFlags : SHREGDEL_FLAGS) : Integer; stdcall;
{$EXTERNALSYM SHRegDeleteEmptyUSKeyA}
function SHRegDeleteUSValueW(hUserKey : HUSKEY; pwzValue : LPCWSTR; delRegFlags : SHREGDEL_FLAGS) : Integer; stdcall;
{$EXTERNALSYM SHRegDeleteUSValueW}
function SHRegDeleteEmptyUSKey(hUserKey : HUSKEY; pszSubKey : LPCSTR; delRegFlags : SHREGDEL_FLAGS) : Integer; stdcall;
{$EXTERNALSYM SHRegDeleteEmptyUSKey}
function SHRegEnumUSKeyA(hUserKey : HUSKEY; dwIndex : DWORD; pszName : LPSTR; pcchName : LPDWORD; enumRegFlags : SHREGENUM_FLAGS) : Integer; stdcall;
{$EXTERNALSYM SHRegEnumUSKeyA}
function SHRegEnumUSKeyW(hUserKey : HUSKEY; dwIndex : DWORD; pwzName : LPWSTR; pcchName : LPDWORD; enumRegFlags : SHREGENUM_FLAGS) : Integer; stdcall;
{$EXTERNALSYM SHRegEnumUSKeyW}
function SHRegEnumUSKey(hUserKey : HUSKEY; dwIndex : DWORD; pszName : LPSTR; pcchName : LPDWORD; enumRegFlags : SHREGENUM_FLAGS) : Integer; stdcall;
{$EXTERNALSYM SHRegEnumUSKey}
function SHRegEnumUSValueA(hUSkey : HUSKEY; dwIndex : DWORD; pszValueName : LPSTR; pcchValueName : LPDWORD; pdwType : LPDWORD; pvData : LPVOID; pcbData : LPDWORD; enumRegFlags : SHREGENUM_FLAGS) : Integer; stdcall;
{$EXTERNALSYM SHRegEnumUSValueA}
function SHRegEnumUSValueW(hUSkey : HUSKEY; dwIndex : DWORD; pszValueName : LPWSTR; pcchValueName : LPDWORD; pdwType : LPDWORD; pvData : LPVOID; pcbData : LPDWORD; enumRegFlags : SHREGENUM_FLAGS) : Integer; stdcall;
{$EXTERNALSYM SHRegEnumUSValueW}
function SHRegEnumUSValue(hUSkey : HUSKEY; dwIndex : DWORD; pszValueName : LPSTR; pcchValueName : LPDWORD; pdwType : LPDWORD; pvData : LPVOID; pcbData : LPDWORD; enumRegFlags : SHREGENUM_FLAGS) : Integer; stdcall;
{$EXTERNALSYM SHRegEnumUSValue}
function SHRegQueryInfoUSKeyA(hUserKey : HUSKEY; pcSubKeys : LPDWORD; pcchMaxSubKeyLen : LPDWORD; pcValues : LPDWORD; pcchMaxValueNameLen : LPDWORD; enumRegFlags : SHREGENUM_FLAGS) : Integer; stdcall;
{$EXTERNALSYM SHRegQueryInfoUSKeyA}
function SHRegQueryInfoUSKeyW(hUserKey : HUSKEY; pcSubKeys : LPDWORD; pcchMaxSubKeyLen : LPDWORD; pcValues : LPDWORD; pcchMaxValueNameLen : LPDWORD; enumRegFlags : SHREGENUM_FLAGS) : Integer; stdcall;
{$EXTERNALSYM SHRegQueryInfoUSKeyW}
function SHRegQueryInfoUSKey(hUserKey : HUSKEY; pcSubKeys : LPDWORD; pcchMaxSubKeyLen : LPDWORD; pcValues : LPDWORD; pcchMaxValueNameLen : LPDWORD; enumRegFlags : SHREGENUM_FLAGS) : Integer; stdcall;
{$EXTERNALSYM SHRegQueryInfoUSKey}
function SHRegCloseUSKey(hUserKey : HUSKEY) : Integer; stdcall;
{$EXTERNALSYM SHRegCloseUSKey}
// These calls are equal to an SHRegOpenUSKey, SHRegQueryUSValue, and then a SHRegCloseUSKey.
function SHRegGetUSValueA(pszSubKey : LPCSTR; pszValue : LPCSTR; pdwType : LPDWORD;
pvData : LPVOID; pcbData : LPDWORD; fIgnoreHKCU : BOOL;
pvDefaultData : LPVOID; dwDefaultDataSize : DWORD) : Integer; stdcall;
{$EXTERNALSYM SHRegGetUSValueA}
function SHRegGetUSValueW(pwzSubKey : LPCWSTR; pwzValue : LPCWSTR; pdwType : LPDWORD;
pvData : LPVOID; pcbData : LPDWORD; fIgnoreHKCU : BOOL;
pvDefaultData : LPVOID; dwDefaultDataSize : DWORD) : Integer; stdcall;
{$EXTERNALSYM SHRegGetUSValueW}
function SHRegGetUSValue(pszSubKey : LPCSTR; pszValue : LPCSTR; pdwType : LPDWORD;
pvData : LPVOID; pcbData : LPDWORD; fIgnoreHKCU : BOOL;
pvDefaultData : LPVOID; dwDefaultDataSize : DWORD) : Integer; stdcall;
{$EXTERNALSYM SHRegGetUSValue}
function SHRegSetUSValueA(pszSubKey : LPCSTR; pszValue : LPCSTR; dwType : DWORD; pvData : LPVOID; cbData : DWORD; dwFlags : DWORD) : Integer; stdcall;
{$EXTERNALSYM SHRegSetUSValueA}
function SHRegSetUSValueW(pwzSubKey : LPCWSTR; pwzValue : LPCWSTR; dwType : DWORD; pvData : LPVOID; cbData : DWORD; dwFlags : DWORD) : Integer; stdcall;
{$EXTERNALSYM SHRegSetUSValueW}
function SHRegSetUSValue(pszSubKey : LPCSTR; pszValue : LPCSTR; dwType : DWORD; pvData : LPVOID; cbData : DWORD; dwFlags : DWORD) : Integer; stdcall;
{$EXTERNALSYM SHRegSetUSValue}
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
function SHRegGetIntW(hk : HKEY; szKey : LPCWSTR; iDefault : Integer) : Integer; stdcall;
{$EXTERNALSYM SHRegGetIntW}
{$ENDIF}
function SHRegGetBoolUSValueA(pszSubKey : LPCSTR; pszValue : LPCSTR; fIgnoreHKCU : BOOL; fDefault : BOOL) : BOOL; stdcall;
{$EXTERNALSYM SHRegGetBoolUSValueA}
function SHRegGetBoolUSValueW(pszSubKey : LPCWSTR; pszValue : LPCWSTR; fIgnoreHKCU : BOOL; fDefault : BOOL) : BOOL; stdcall;
{$EXTERNALSYM SHRegGetBoolUSValueW}
function SHRegGetBoolUSValue(pszSubKey : LPCSTR; pszValue : LPCSTR; fIgnoreHKCU : BOOL; fDefault : BOOL) : BOOL; stdcall;
{$EXTERNALSYM SHRegGetBoolUSValue}
//IQueryAssociations
const IID_IQueryAssociations : TGUID = (D1:$C46CA590; D2:$3C3F; D3:$11D2; D4:($BE, $E6, $00, $00, $F8, $05, $CA, $57));
const SID_IQueryAssociations = '{C46CA590-3C3F-11D2-BEE6-0000F805CA57}';
const CLSID_QueryAssociations : TGUID = (D1:$a07034fd; D2:$6caa; D3:$4954; D4:($ac, $3f, $97, $a2, $72, $16, $f9, $8a));
{$IFNDEF SST_NOINCLUDESSTDYNSHLWAPI}
const ASSOCF_INIT_NOREMAPCLSID = $00000001; // "do not remap clsids to progids"
const ASSOCF_INIT_BYEXENAME = $00000002; // "executable is being passed in"
const ASSOCF_OPEN_BYEXENAME = $00000002; // "executable is being passed in"
const ASSOCF_INIT_DEFAULTTOSTAR = $00000004; // "treat "*" as the BaseClass"
const ASSOCF_INIT_DEFAULTTOFOLDER = $00000008; // "treat "Folder" as the BaseClass"
const ASSOCF_NOUSERSETTINGS = $00000010; // "dont use HKCU"
const ASSOCF_NOTRUNCATE = $00000020; // "dont truncate the return string"
const ASSOCF_VERIFY = $00000040; // "verify data is accurate (DISK HITS)"
const ASSOCF_REMAPRUNDLL = $00000080; // "actually gets info about rundlls target if applicable"
const ASSOCF_NOFIXUPS = $00000100; // "attempt to fix errors if found"
const ASSOCF_IGNOREBASECLASS = $00000200; // "dont recurse into the baseclass"
const ASSOCF_INIT_IGNOREUNKNOWN = $00000400; // "dont use the "Unknown" progid, instead fail"
type ASSOCF = DWORD;
{$EXTERNALSYM ASSOCF}
{$ENDIF}
{$IFNDEF SST_NOINCLUDESSTDYNSHLWAPI}
const ASSOCKEY_SHELLEXECCLASS = 1;
const ASSOCKEY_APP = 2;
const ASSOCKEY_CLASS = 3;
const ASSOCKEY_BASECLASS = 4;
const ASSOCKEY_MAX = 5;
type ASSOCKEY = DWORD;
{$EXTERNALSYM ASSOCKEY}
{$ENDIF}
{$IFNDEF SST_NOINCLUDESSTDYNSHLWAPI}
const ASSOCDATA_MSIDESCRIPTOR = 1; // "Component Descriptor to pass to MSI APIs"
const ASSOCDATA_NOACTIVATEHANDLER = 2; // "restrict attempts to activate window"
const ASSOCDATA_QUERYCLASSSTORE = 3; // "should check with the NT Class Store"
const ASSOCDATA_HASPERUSERASSOC = 4; // "defaults to user specified association"
const ASSOCDATA_EDITFLAGS = 5; // "Edit flags."
const ASSOCDATA_VALUE = 6; // "use pszExtra as the Value name"
const ASSOCDATA_MAX = 7;
type ASSOCDATA = DWORD;
{$EXTERNALSYM ASSOCDATA}
{$ENDIF}
{$IFNDEF SST_NOINCLUDESSTDYNSHLWAPI}
type ASSOCENUM = (ASSOCENUM_NONE);
{$EXTERNALSYM ASSOCENUM}
{$ENDIF}
{$IFNDEF SST_NOINCLUDESSTDYNSHLWAPI}
const ASSOCSTR_COMMAND = 1; // "shell\verb\command string"
const ASSOCSTR_EXECUTABLE = 2; // "the executable part of command string"
const ASSOCSTR_FRIENDLYDOCNAME = 3; // "friendly name of the document type"
const ASSOCSTR_FRIENDLYAPPNAME = 4; // "friendly name of executable"
const ASSOCSTR_NOOPEN = 5; // "noopen value"
const ASSOCSTR_SHELLNEWVALUE = 6; // "query values under the shellnew key"
const ASSOCSTR_DDECOMMAND = 7; // "template for DDE commands"
const ASSOCSTR_DDEIFEXEC = 8; // "DDECOMMAND to use if just create a process"
const ASSOCSTR_DDEAPPLICATION = 9; // "Application name in DDE broadcast"
const ASSOCSTR_DDETOPIC = 10; // "Topic Name in DDE broadcast"
const ASSOCSTR_INFOTIP = 11; // "info tip for an item, or list of properties to create info tip from"
const ASSOCSTR_QUICKTIP = 12; // "same as ASSOCSTR_INFOTIP, except, this list contains only quickly retrievable properties"
const ASSOCSTR_TILEINFO = 13; // "similar to ASSOCSTR_INFOTIP - lists important properties for tileview"
const ASSOCSTR_CONTENTTYPE = 14; // "MIME Content type"
const ASSOCSTR_DEFAULTICON = 15; // "Default icon source"
const ASSOCSTR_SHELLEXTENSION = 16; // "Guid string pointing to the Shellex\Shellextensionhandler value."
const ASSOCSTR_MAX = 17;
type ASSOCSTR = DWORD;
{$EXTERNALSYM ASSOCSTR}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
{$IFDEF SST_INCLUDESHLWAPICOM}
{$IFNDEF SST_NOINCLUDESSTDYNSHLWAPI}
type IQueryAssociations = INTERFACE(IUnknown)
[SID_IQueryAssociations]
function Init(flags : ASSOCF; pszAssoc : LPCWSTR; hkProgid : HKEY; hwnd : HWND) : HRESULT; stdcall;
function GetString(flags : ASSOCF; str : ASSOCSTR; pszExtra : LPCWSTR; pszOut : LPWSTR; VAR pcchOut : DWORD) : HRESULT; stdcall;
function GetKey(flags : ASSOCF; key : ASSOCKEY; pszExtra : LPCWSTR; OUT phkeyOut : HKEY) : HRESULT; stdcall;
function GetData(flags : ASSOCF; data : ASSOCDATA; pszExtra : LPCWSTR; OUT pvOut : Pointer; VAR pcbOut : DWORD) : HRESULT; stdcall;
function GetEnum(flags : ASSOCF; enum : ASSOCENUM; pszExtra : LPCWSTR; riid : TGUID; OUT ppvOut : POINTER) : HRESULT; stdcall;
END;
{$EXTERNALSYM IQueryAssociations}
{$ENDIF}
{$ENDIF}
{$ENDIF}
//AssocCreate
{$IFDEF SST_SHLWAPIVER5PT0}
{$IFDEF SST_INCLUDESHLWAPICOM}
{$IFNDEF SST_NOINCLUDESSTDYNSHLWAPI}
function AssocCreate(clsid : TCLSID; riid : TGUID; VAR ppv : IUnknown) : HRESULT; stdcall;
{$EXTERNALSYM AssocCreate}
{$ENDIF}
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
{$IFNDEF SST_NOINCLUDESSTDYNSHLWAPI}
function AssocQueryStringA(flags : ASSOCF; fstr : ASSOCSTR; pszAssoc : LPCSTR;
pszExtra : LPCSTR; pszOut : LPSTR; VAR pcchOut : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM AssocQueryStringA}
function AssocQueryStringW(flags : ASSOCF; fstr : ASSOCSTR; pszAssoc : LPCWSTR;
pszExtra : LPCWSTR; pszOut : LPWSTR; VAR pcchOut : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM AssocQueryStringW}
function AssocQueryString(flags : ASSOCF; fstr : ASSOCSTR; pszAssoc : LPCSTR;
pszExtra : LPCSTR; pszOut : LPSTR; VAR pcchOut : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM AssocQueryString}
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
{$IFNDEF SST_NOINCLUDESSTDYNSHLWAPI}
function AssocQueryStringByKeyA(flags : ASSOCF; fstr : ASSOCSTR; hkAssoc : HKEY;
pszExtra : LPCSTR; pszOut : LPSTR; VAR pcchOut : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM AssocQueryStringByKeyA}
function AssocQueryStringByKeyW(flags : ASSOCF; fstr : ASSOCSTR; hkAssoc : HKEY;
pszExtra : LPCWSTR; pszOut : LPWSTR; VAR pcchOut : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM AssocQueryStringByKeyW}
function AssocQueryStringByKey(flags : ASSOCF; fstr : ASSOCSTR; hkAssoc : HKEY;
pszExtra : LPCSTR; pszOut : LPSTR; VAR pcchOut : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM AssocQueryStringByKey}
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
{$IFNDEF SST_NOINCLUDESSTDYNSHLWAPI}
function AssocQueryKeyA(flags : ASSOCF; key : ASSOCKEY; pszAssoc : LPCSTR;
pszExtra : LPCSTR; VAR phkeyOut : HKEY) : HRESULT; stdcall;
{$EXTERNALSYM AssocQueryKeyA}
function AssocQueryKeyW(flags : ASSOCF; key : ASSOCKEY; pszAssoc : LPCWSTR;
pszExtra : LPCWSTR; VAR phkeyOut : HKEY) : HRESULT; stdcall;
{$EXTERNALSYM AssocQueryKeyW}
function AssocQueryKey(flags : ASSOCF; key : ASSOCKEY; pszAssoc : LPCSTR;
pszExtra : LPCSTR; VAR phkeyOut : HKEY) : HRESULT; stdcall;
{$EXTERNALSYM AssocQueryKey}
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0SP1}
{$IFNDEF SST_NOINCLUDESSTDYNSHLWAPI}
function AssocIsDangerous(pszAssoc : LPCWSTR) : BOOL; stdcall;
{$EXTERNALSYM AssocIsDangerous}
{$ENDIF}
{$ENDIF}
const PERCEIVED_TYPE_FIRST = -3;
const PERCEIVED_TYPE_CUSTOM = -3;
const PERCEIVED_TYPE_UNSPECIFIED = -2;
const PERCEIVED_TYPE_FOLDER = -1;
const PERCEIVED_TYPE_UNKNOWN = 0;
const PERCEIVED_TYPE_TEXT = 1;
const PERCEIVED_TYPE_IMAGE = 2;
const PERCEIVED_TYPE_AUDIO = 3;
const PERCEIVED_TYPE_VIDEO = 4;
const PERCEIVED_TYPE_COMPRESSED = 5;
const PERCEIVED_TYPE_DOCUMENT = 6;
const PERCEIVED_TYPE_SYSTEM = 7;
const PERCEIVED_TYPE_APPLICATION = 8;
const PERCEIVED_TYPE_GAMEMEDIA = 9;
const PERCEIVED_TYPE_CONTACTS = 10;
const PERCEIVED_TYPE_LAST = 10;
type PERCEIVED = INTEGER;
{$EXTERNALSYM PERCEIVED}
const PERCEIVEDFLAG_UNDEFINED = $0000;
const PERCEIVEDFLAG_SOFTCODED = $0001;
const PERCEIVEDFLAG_HARDCODED = $0002;
const PERCEIVEDFLAG_NATIVESUPPORT = $0004;
const PERCEIVEDFLAG_GDIPLUS = $0010;
const PERCEIVEDFLAG_WMSDK = $0020;
const PERCEIVEDFLAG_ZIPFOLDER = $0040;
TYPE PERCEIVEDFLAG = DWORD;
{$EXTERNALSYM PERCEIVEDFLAG}
//AssocGetPerceivedType
{$IFDEF SST_SHLWAPIVER6PT0W2003SP2}
{$IFNDEF SST_NOINCLUDESSTDYNSHLWAPI}
function AssocGetPerceivedType(pszExt : LPCWSTR; VAR ptype : PERCEIVED;
VAR pflag : PERCEIVEDFLAG; ppszType : LPWSTR) : HRESULT; stdcall;
{$EXTERNALSYM AssocGetPerceivedType}
{$ENDIF}
{$ENDIF}
//
//=============== Stream Routines =============================================
//
{$IFDEF SST_INCLUDESHLWAPICOM}
function SHOpenRegStreamA(keyh : HKEY; pszSubkey : LPCSTR; pszValue : LPCSTR; grfMode : DWORD) : IStream; stdcall;
{$EXTERNALSYM SHOpenRegStreamA}
function SHOpenRegStreamW(keyh : HKEY; pszSubkey : LPCWSTR; pszValue : LPCWSTR; grfMode : DWORD) : IStream; stdcall;
{$EXTERNALSYM SHOpenRegStreamW}
function SHOpenRegStream(keyh : HKEY; pszSubkey : LPCSTR; pszValue : LPCSTR; grfMode : DWORD) : IStream; stdcall;
{$EXTERNALSYM SHOpenRegStream}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
{$IFDEF SST_INCLUDESHLWAPICOM}
function SHOpenRegStream2A(keyh : HKEY; pszSubkey : LPCSTR; pszValue : LPCSTR; grfMode : DWORD) : IStream; stdcall;
{$EXTERNALSYM SHOpenRegStream2A}
function SHOpenRegStream2W(keyh : HKEY; pszSubkey : LPCWSTR; pszValue : LPCWSTR; grfMode : DWORD) : IStream; stdcall;
{$EXTERNALSYM SHOpenRegStream2W}
function SHOpenRegStream2(keyh : HKEY; pszSubkey : LPCSTR; pszValue : LPCSTR; grfMode : DWORD) : IStream; stdcall;
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
{$IFDEF SST_INCLUDESHLWAPICOM}
function SHCreateStreamOnFileA(pszFile : LPCSTR; grfMode : DWORD; VAR ppstm : IStream) : HRESULT; stdcall;
{$EXTERNALSYM SHCreateStreamOnFileA}
function SHCreateStreamOnFileW(pszFile : LPCWSTR; grfMode : DWORD; VAR ppstm : IStream) : HRESULT; stdcall;
{$EXTERNALSYM SHCreateStreamOnFileW}
function SHCreateStreamOnFile(pszFile : LPCSTR; grfMode : DWORD; VAR ppstm : IStream) : HRESULT; stdcall;
{$EXTERNALSYM SHCreateStreamOnFile}
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0}
{$IFDEF SST_INCLUDESHLWAPICOM}
function SHCreateStreamOnFileEx(pszFile : LPCWSTR; grfMode : DWORD; dwAttributes : DWORD;
fCreate : BOOL; pstmTemplate : IStream; VAR ppstm : IStream) : HRESULT; stdcall;
{$EXTERNALSYM SHCreateStreamOnFileEx}
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
//{$IFDEF SST_SHLWAPIVER5PT0}
{$IFDEF SST_INCLUDESHLWAPICOM}
function SHCreateMemStream(pInit : PByte; cbInit : UINT) : IStream; stdcall;
{$EXTERNALSYM SHCreateMemStream}
{$ENDIF}
{$ENDIF}
//=============== Multi Language UI Routines ==================================
//MLLoadLibraryX params
const ML_NO_CROSSCODEPAGE = 0;
{$EXTERNALSYM ML_NO_CROSSCODEPAGE}
const ML_CROSSCODEPAGE_NT = 1;
{$EXTERNALSYM ML_CROSSCODEPAGE_NT}
const ML_CROSSCODEPAGE = 2;
{$EXTERNALSYM ML_CROSSCODEPAGE}
const ML_SHELL_LANGUAGE = 4;
{$EXTERNALSYM ML_SHELL_LANGUAGE}
const ML_CROSSCODEPAGE_MASK = 7;
{$EXTERNALSYM ML_CROSSCODEPAGE_MASK}
{$IFDEF SST_SHLWAPIVER5PT0}
//{$IFDEF SST_SHLWAPIVER6PT0VISTA}
function MLLoadLibraryA(lpLibFileName : LPCSTR; moduleh : HMODULE; dwCrossCodePage : DWORD) : HMODULE; stdcall;
{$EXTERNALSYM MLLoadLibraryA}
function MLLoadLibraryW(lpLibFileName : LPCWSTR; moduleh : HMODULE; dwCrossCodePage : DWORD) : HMODULE; stdcall;
{$EXTERNALSYM MLLoadLibraryW}
function MLLoadLibrary(lpLibFileName : LPCSTR; moduleh : HMODULE; dwCrossCodePage : DWORD) : HMODULE; stdcall;
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
//{$IFDEF SST_SHLWAPIVER6PT0VISTA}
function MLFreeLibrary(moduleh : HMODULE) : BOOL; stdcall;
{$EXTERNALSYM MLFreeLibrary}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function MLWinHelpA(hWndMain : HWND; lpszHelp : LPCSTR; uCommand : UINT; dwData : DWORD) : BOOL; stdcall;
{$EXTERNALSYM MLWinHelpA}
function MLWinHelpW(hWndMain : HWND; lpszHelp : LPCWSTR; uCommand : UINT; dwData : DWORD) : BOOL; stdcall;
{$EXTERNALSYM MLWinHelpW}
function MLWinHelp(hWndMain : HWND; lpszHelp : LPCSTR; uCommand : UINT; dwData : DWORD) : BOOL; stdcall;
{$EXTERNALSYM MLWinHelp}
{$ENDIF}
//=============== HTTP helper Routines ========================================
//{$IFDEF SST_SHLWAPIVER6PT0W2003SP2}
{$IFDEF SST_SHLWAPIVER5PT0}
function GetAcceptLanguagesA(psz : LPSTR; pcch : LPDWORD) : HRESULT; stdcall;
{$EXTERNALSYM GetAcceptLanguagesA}
function GetAcceptLanguagesW(psz : LPWSTR; pcch : LPDWORD) : HRESULT; stdcall;
{$EXTERNALSYM GetAcceptLanguagesW}
function GetAcceptLanguages(psz : LPSTR; pcch : LPDWORD) : HRESULT; stdcall;
{$EXTERNALSYM GetAcceptLanguages}
{$ENDIF}
//StopWatchMode function return values (bit flags)
//According to the original Microsoft C/C++ declarations the following
//constants are only supported under IE versions up to and including 7.0
const SPMODE_SHELL = $00000001;
const SPMODE_DEBUGOUT = $00000002;
const SPMODE_TEST = $00000004;
const SPMODE_BROWSER = $00000008;
const SPMODE_FLUSH = $00000010;
const SPMODE_EVENT = $00000020;
const SPMODE_MSVM = $00000040;
const SPMODE_FORMATTEXT = $00000080;
const SPMODE_PROFILE = $00000100;
const SPMODE_DEBUGBREAK = $00000200;
const SPMODE_MSGTRACE = $00000400;
const SPMODE_PERFTAGS = $00000800;
const SPMODE_MEMWATCH = $00001000;
const SPMODE_DBMON = $00002000;
const SPMODE_MULTISTOP = $00004000;
const SPMODE_EVENTTRACE = $00008000; //"Event Tracing for Windows Enabled"
//function StopWatchMode() : DWORD; stdcall;
//function StopWatchFlush() : DWORD; stdcall;
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
//{$IFDEF SST_SHLWAPIVER5PT0}
Procedure IUnknown_Set(VAR ppunk : IUnknown; punk : IUnknown); stdcall;
{$EXTERNALSYM IUnknown_Set}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
//{$IFDEF SST_SHLWAPIVER5PT0}
Procedure IUnknown_AtomicRelease(VAR ppunk : IUnknown); stdcall;
{$EXTERNALSYM IUnknown_AtomicRelease}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
//{$IFDEF SST_SHLWAPIVER5PT0}
function IUnknown_GetWindow(punk : IUnknown; VAR phwnd : HWND) : HRESULT; stdcall;
{$EXTERNALSYM IUnknown_GetWindow}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
//{$IFDEF SST_SHLWAPIVER5PT0}
function IUnknown_SetSite(punk : IUnknown; punkSite : IUnknown) : HRESULT; stdcall;
{$EXTERNALSYM IUnknown_SetSite}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
//{$IFDEF SST_SHLWAPIVER5PT0}
function IUnknown_GetSite(punk : IUnknown; riid : TGUID; VAR ppv : IUnknown) : HRESULT; stdcall;
{$EXTERNALSYM IUnknown_GetSite}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function IUnknown_QueryService(punk : IUnknown; guidService : TGUID; riid : TGUID; VAR ppvOut : Pointer) : HRESULT; stdcall;
{$EXTERNALSYM IUnknown_QueryService}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
{$IFDEF SST_INCLUDESHLWAPICOM}
function IStream_Read(pstm : IStream; pv : Pointer; cb : ULONG) : HRESULT; stdcall;
//{$EXTERNALSYM IStream_Read}
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
{$IFDEF SST_INCLUDESHLWAPICOM}
function IStream_Write(pstm : IStream; pv : Pointer; cb : ULONG) : HRESULT; stdcall;
{$EXTERNALSYM IStream_Write}
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
{$IFDEF SST_INCLUDESHLWAPICOM}
function IStream_Reset(pstm : IStream) : HRESULT; stdcall;
{$EXTERNALSYM IStream_Reset}
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
{$IFDEF SST_INCLUDESHLWAPICOM}
function IStream_Size(pstm : IStream; VAR pui : ULARGE_INTEGER) : HRESULT; stdcall;
{$EXTERNALSYM IStream_Size}
{$ENDIF}
{$ENDIF}
//ConnectToConnectionPoint
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
//{$IFDEF SST_SHLWAPIVER5PT0}
{$IFDEF SST_INCLUDESHLWAPICOM}
function ConnectToConnectionPoint(punk : IUnknown; riidEvent : TGUID; fConnect : BOOL;
punkTarget : IUnknown; VAR pdwCookie : DWORD;
OUT ppcpOut : IConnectionPoint) : HRESULT; stdcall;
{$EXTERNALSYM ConnectToConnectionPoint}
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
{$IFDEF SST_INCLUDESHLWAPICOM}
//Note, that the ItemIDLists in the following two functions
//are/have to be relative ItemIDLists !
function IStream_ReadPidl(pstm : IStream; VAR ppidlOut : PItemIDList) : HRESULT; stdcall;
{$EXTERNALSYM IStream_ReadPidl}
function IStream_WritePidl(pstm : IStream; pidlWrite : PItemIDList) : HRESULT; stdcall;
{$EXTERNALSYM IStream_WritePidl}
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
{$IFDEF SST_INCLUDESHLWAPICOM}
function IStream_ReadStr(pstm : IStream; ppsz : LPWSTR) : HRESULT; stdcall;
{$EXTERNALSYM IStream_ReadStr}
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
{$IFDEF SST_INCLUDESHLWAPICOM}
function IStream_WriteStr(pstm : IStream; psz : LPCWSTR) : HRESULT; stdcall;
{$EXTERNALSYM IStream_WriteStr}
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
{$IFDEF SST_INCLUDESHLWAPICOM}
function IStream_Copy(pstmFrom : IStream; pstmTo : IStream; cb : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM IStream_Copy}
{$ENDIF}
{$ENDIF}
//SHGetViewStatePropertyBag
const SHGVSPB_PERUSER = $00000001; //"must have one of PERUSER or ALLUSERS"
const SHGVSPB_ALLUSERS = $00000002;
const SHGVSPB_PERFOLDER = $00000004; //"must have one of PERFOLDER ALLFOLDERS or INHERIT"
const SHGVSPB_ALLFOLDERS = $00000008;
const SHGVSPB_INHERIT = $00000010;
const SHGVSPB_ROAM = $00000020; //"modifies the above"
const SHGVSPB_NOAUTODEFAULTS = $80000000; //"turns off read delegation to more general property bags"
const SHGVSPB_FOLDER = (SHGVSPB_PERUSER OR SHGVSPB_PERFOLDER);
const SHGVSPB_FOLDERNODEFAULTS = (SHGVSPB_PERUSER OR SHGVSPB_PERFOLDER OR SHGVSPB_NOAUTODEFAULTS);
const SHGVSPB_USERDEFAULTS = (SHGVSPB_PERUSER OR SHGVSPB_ALLFOLDERS);
const SHGVSPB_GLOBALDEAFAULTS = (SHGVSPB_ALLUSERS OR SHGVSPB_ALLFOLDERS);
{$IFDEF SST_SHLWAPIVER6PT0}
function SHGetViewStatePropertyBag(pidl : PItemIDList; pszBagName : LPCWSTR; dwFlags : DWORD;
riid : TGUID; VAR ppv : Pointer) : HRESULT; stdcall;
{$ENDIF}
//SHFormatDateTime formatting flags
const FDTF_SHORTTIME = $00000001; // "eg, "7:48 PM" "
const FDTF_SHORTDATE = $00000002; // "eg, "3/29/98" "
const FDTF_DEFAULT = (FDTF_SHORTDATE OR FDTF_SHORTTIME); // "eg, "3/29/98 7:48 PM" "
const FDTF_LONGDATE = $00000004; // "eg, "Monday, March 29, 1998" "
const FDTF_LONGTIME = $00000008; // "eg. "7:48:33 PM" "
const FDTF_RELATIVE = $00000010; // "uses "Yesterday", etc. if possible "
const FDTF_LTRDATE = $00000100; // "Left To Right reading order "
const FDTF_RTLDATE = $00000200; // "Right To Left reading order "
const FDTF_NOAUTOREADINGORDER = $00000400; // "Don't detect reading order automatically. Useful if you will be converting to Ansi and don't want Unicode reading order characters"
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
//{$IFDEF SST_SHLWAPIVER5PT0}
function SHFormatDateTimeA(puft : PFileTime; pdwFlags : PDWORD; pszBuf : LPSTR; cchBuf : UINT) : Integer; stdcall;
{$EXTERNALSYM SHFormatDateTimeA}
function SHFormatDateTimeW(puft : PFileTime; pdwFlags : PDWORD; pszBuf : LPWSTR; cchBuf : UINT) : Integer; stdcall;
{$EXTERNALSYM SHFormatDateTimeW}
function SHFormatDateTime(puft : PFileTime; pdwFlags : PDWORD; pszBuf : LPSTR; cchBuf : UINT) : Integer; stdcall;
{$EXTERNALSYM SHFormatDateTime}
{$ENDIF}
//{$IFDEF SST_SHLWAPIVER6PT0VISTA}
{$IFDEF SST_SHLWAPIVER5PT0}
function SHAnsiToUnicode(pszSrc : LPCSTR; pwszDst : LPWSTR; cwchBuf : Integer) : Integer; stdcall;
{$EXTERNALSYM SHAnsiToUnicode}
{$ENDIF}
//{$IFDEF SST_SHLWAPIVER6PT0VISTA}
{$IFDEF SST_SHLWAPIVER5PT0}
function SHAnsiToAnsi(pszSrc : LPCSTR; pszDst : LPSTR; cchBuf : Integer) : Integer; stdcall;
{$EXTERNALSYM SHAnsiToAnsi}
{$ENDIF}
//{$IFDEF SST_SHLWAPIVER6PT0VISTA}
{$IFDEF SST_SHLWAPIVER5PT0}
function SHUnicodeToAnsi(pwszSrc : LPCWSTR; pszDst : LPSTR; cchBuf : Integer) : Integer; stdcall;
{$EXTERNALSYM SHUnicodeToAnsi}
{$ENDIF}
//{$IFDEF SST_SHLWAPIVER6PT0VISTA}
{$IFDEF SST_SHLWAPIVER5PT0}
function SHUnicodeToUnicode(pwzSrc : LPCWSTR; pwszDst : LPWSTR; cwchBuf : Integer) : Integer; stdcall;
{$EXTERNALSYM SHUnicodeToAnsi}
{$ENDIF}
//{$IFDEF SST_SHLWAPIVER6PT0VISTA}
{$IFDEF SST_SHLWAPIVER5PT0}
function SHMessageBoxCheckA(wndh : HWND; pszText : LPCSTR; pszCaption : LPCSTR; uType : UINT;
iDefault : Integer; pszRegVal : LPCSTR) : Integer; stdcall;
{$EXTERNALSYM SHMessageBoxCheckA}
function SHMessageBoxCheckW(wndh : HWND; pszText : LPCWSTR; pszCaption : LPCWSTR; uType : UINT;
iDefault : Integer; pszRegVal : LPCWSTR) : Integer; stdcall;
{$EXTERNALSYM SHMessageBoxCheckW}
function SHMessageBoxCheck(wndh : HWND; pszText : LPCSTR; pszCaption : LPCSTR; uType : UINT;
iDefault : Integer; pszRegVal : LPCSTR) : Integer; stdcall;
{$EXTERNALSYM SHMessageBoxCheck}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function SHSendMessageBroadcastA(uMsg : UINT; wParam : WPARAM; lParam: LPARAM) : LRESULT; stdcall;
{$EXTERNALSYM SHSendMessageBroadcastA}
function SHSendMessageBroadcastW(uMsg : UINT; wParam : WPARAM; lParam: LPARAM) : LRESULT; stdcall;
{$EXTERNALSYM SHSendMessageBroadcastW}
function SHSendMessageBroadcast(uMsg : UINT; wParam : WPARAM; lParam: LPARAM) : LRESULT; stdcall;
{$EXTERNALSYM SHSendMessageBroadcast}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
//{$IFDEF SST_SHLWAPIVER6PT0VISTA}
function SHStripMneumonicA(pszMenu : LPSTR) : CHAR; stdcall;
{$EXTERNALSYM SHStripMneumonicA}
function SHStripMneumonicW(pszMenu : LPWSTR) : WCHAR; stdcall;
{$EXTERNALSYM SHStripMneumonicW}
function SHStripMneumonic(pszMenu : LPSTR) : CHAR; stdcall;
{$EXTERNALSYM SHStripMneumonic}
{$ENDIF}
// Returns TRUE/FALSE depending on question
const OS_WINDOWS = 0; //"Windows 9x vs. NT"
const OS_NT = 1; //"Windows 9x vs. NT"
const OS_WIN95ORGREATER = 2; //"Win95 or greater"
const OS_NT4ORGREATER = 3; //"NT4 or greater"
const OS_WIN98ORGREATER = 5; //"Win98 or greater"
const OS_WIN98_GOLD = 6; //"Win98 Gold (Version 4.10 build 1998)"
const OS_WIN2000ORGREATER = 7; //"Some derivative of Win2000"
//"NOTE: these flags check explicitly for (dwMajorVersion == 5)
const OS_WIN2000PRO = 8; //"Windows 2000 Professional (Workstation)"
const OS_WIN2000SERVER = 9; //"Windows 2000 Server"
const OS_WIN2000ADVSERVER = 10; //"Windows 2000 Advanced Server"
const OS_WIN2000DATACENTER = 11; //"Windows 2000 Data Center Server"
const OS_WIN2000TERMINAL = 12; //"Windows 2000 Terminal Server in "Application Server" mode (now simply called" "Terminal Server")
const OS_EMBEDDED = 13; //"Embedded Windows Edition"
const OS_TERMINALCLIENT = 14; //"Windows Terminal Client (eg user is comming in via tsclient)"
const OS_TERMINALREMOTEADMIN = 15; //"Terminal Server in "Remote Administration" mode"
const OS_WIN95_GOLD = 16; //"Windows 95 Gold (Version 4.0 Build 1995)"
const OS_MEORGREATER = 17; //"Windows Millennium (Version 5.0)"
const OS_XPORGREATER = 18; //"Windows XP or greater"
const OS_HOME = 19; //"Home Edition (eg NOT Professional, Server, Advanced Server, or Datacenter)"
const OS_PROFESSIONAL = 20; //"Professional (aka Workstation; eg NOT Server, Advanced Server, or Datacenter)"
const OS_DATACENTER = 21; //"Datacenter (eg NOT Server, Advanced Server, Professional, or Personal)"
const OS_ADVSERVER = 22; //"Advanced Server (eg NOT Datacenter, Server, Professional, or Personal)"
const OS_SERVER = 23; //"Server (eg NOT Datacenter, Advanced Server, Professional, or Personal)"
const OS_TERMINALSERVER = 24; //"Terminal Server - server running in what used to be called "Application Server" mode (now simply called "Terminal Server") "
const OS_PERSONALTERMINALSERVER = 25; //"Personal Terminal Server - per/pro machine running in single user TS mode"
const OS_FASTUSERSWITCHING = 26; //"Fast User Switching"
const OS_WELCOMELOGONUI = 27; //"New friendly logon UI"
const OS_DOMAINMEMBER = 28; //"Is this machine a member of a domain (eg NOT a workgroup)"
const OS_ANYSERVER = 29; //"is this machine any type of server? (eg datacenter or advanced server or server)?"
const OS_WOW6432 = 30; //"Is this process a 32-bit process running on an 64-bit platform?"
const OS_WEBSERVER = 31; //"Web Edition Server"
const OS_SMALLBUSINESSSERVER = 32; //"SBS Server"
const OS_TABLETPC = 33; //"Are we running on a TabletPC?"
const OS_SERVERADMINUI = 34; //"Should defaults lean towards those preferred by server administrators?"
const OS_MEDIACENTER = 35; //"eHome Freestyle Project"
const OS_APPLIANCE = 36; //"Windows .NET Appliance Server"
{$IFDEF SST_SHLWAPIVER5PT0}
function IsOS(dwOS : DWORD) : BOOL; stdcall;
{$EXTERNALSYM IsOS}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0W2003SP2}
function SHAllocShared(pvData : LPCVOID; dwSize : DWORD; dwDestinationProcessId : DWORD) : THandle; stdcall;
{$EXTERNALSYM SHAllocShared}
function SHFreeShared(hData : THandle; dwSourceProcId : DWORD) : BOOL; stdcall;
{$EXTERNALSYM SHFreeShared}
function SHLockShared(hData : THandle; dwOtherProcId : DWORD) : LPVOID; stdcall;
{$EXTERNALSYM SHLockShared}
function SHUnlockShared(lpvData : LPVOID) : BOOL; stdcall;
{$EXTERNALSYM SHUnlockShared}
{$ENDIF}
// Return values of WhichPlatform
const PLATFORM_UNKNOWN = 0;
const PLATFORM_IE3 = 1; //"obsolete: use PLATFORM_BROWSERONLY"
const PLATFORM_BROWSERONLY = 1; //"browser-only (no new shell)"
const PLATFORM_INTEGRATED = 2; //"integrated shell"
//{$IFDEF SST_SHLWAPIVER6PT0VISTA}
{$IFDEF SST_SHLWAPIVER5PT0}
function WhichPlatform() : UINT; stdcall;
{$EXTERNALSYM WhichPlatform}
{$ENDIF}
{$IFDEF SST_INCLUDESHLWAPICOM}
type QITAB = RECORD
piid : TIID;
dwOffset : Integer;
END;
{$EXTERNALSYM QITAB}
type LPQITAB = ^QITAB;
{$EXTERNALSYM LPQITAB}
type LPCQITAB = LPQITAB;
{$EXTERNALSYM LPCQITAB}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
//{$IFDEF SST_SHLWAPIVER6PT0VISTA}
function QISearch(that : Pointer; pqit : LPCQITAB; riid : TGUID; VAR ppv : Pointer) : HRESULT; stdcall;
{$EXTERNALSYM QISearch}
{$ENDIF}
//Parameter for SHIsLowMemoryMachine
const ILMM_IE4 = 0; // 1997-era machine
{$IFDEF SST_SHLWAPIVER5PT0}
function SHIsLowMemoryMachine(dwType : DWORD) : BOOL; stdcall;
{$EXTERNALSYM SHIsLowMemoryMachine}
{$ENDIF}
function GetMenuPosFromID(menuh : HMENU; id : UINT) : Integer; stdcall;
{$EXTERNALSYM GetMenuPosFromID}
{$IFDEF SST_SHLWAPIVER5PT0}
function SHGetInverseCMAP(VAR pbMap : PByte; cbMap : ULONG) : HRESULT; stdcall;
{$EXTERNALSYM SHGetInverseCMAP}
{$ENDIF}
//Note, that SHAutoComplete requires IE 5.0 or later
//"SHAutoComplete"
// "hwndEdit - HWND of editbox, ComboBox or ComboBoxEx."
// "dwFlags - Flags to indicate what to AutoAppend or AutoSuggest for the editbox."
//
// "WARNING:"
// "Caller needs to have called CoInitialize() or OleInitialize()"
// "and cannot call CoUninit/OleUninit until after"
// "WM_DESTROY on hwndEdit."
//
// dwFlags values:
const SHACF_DEFAULT = $00000000; //"Currently (SHACF_FILESYSTEM | SHACF_URLALL)"
{$EXTERNALSYM SHACF_DEFAULT}
const SHACF_FILESYSTEM = $00000001; //"This includes the File System as well as the rest of the shell (Desktop\My" Computer\Control Panel\)
{$EXTERNALSYM SHACF_FILESYSTEM}
const SHACF_URLHISTORY = $00000002; //"URLs in the User's History"
{$EXTERNALSYM SHACF_URLHISTORY}
const SHACF_URLMRU = $00000004; //"URLs in the User's Recently Used list."
{$EXTERNALSYM SHACF_URLMRU}
const SHACF_URLALL = SHACF_URLHISTORY OR SHACF_URLMRU;
{$EXTERNALSYM SHACF_URLALL}
const SHACF_USETAB = $00000008; //"Use the tab to move thru the autocomplete possibilities instead of to the next dialog/window control."
{$EXTERNALSYM SHACF_USETAB}
const SHACF_FILESYS_ONLY = $00000010; //"This includes the File System"
{$EXTERNALSYM SHACF_FILESYS_ONLY}
//The following flag requires IE 6.0 or later
const SHACF_FILESYS_DIRS = $00000020; //"Same as SHACF_FILESYS_ONLY except it only includes directories, UNC servers, and UNC server shares."
{$EXTERNALSYM SHACF_FILESYS_DIRS}
//The following flag requires IE 7.0 or later
const SHACF_VIRTUAL_NAMESPACE = $00000040; //"Also include the virtual namespace"
{$EXTERNALSYM SHACF_VIRTUAL_NAMESPACE}
const SHACF_AUTOSUGGEST_FORCE_ON = $10000000; //"Ignore the registry default and force the feature on."
{$EXTERNALSYM SHACF_AUTOSUGGEST_FORCE_ON}
const SHACF_AUTOSUGGEST_FORCE_OFF = $20000000; //"Ignore the registry default and force the feature off."
{$EXTERNALSYM SHACF_AUTOSUGGEST_FORCE_OFF}
const SHACF_AUTOAPPEND_FORCE_ON = $40000000; //"Ignore the registry default and force the feature on. (Also know as AutoComplete)"
{$EXTERNALSYM SHACF_AUTOAPPEND_FORCE_ON}
const SHACF_AUTOAPPEND_FORCE_OFF = $80000000; //"Ignore the registry default and force the feature off. (Also know as AutoComplete)"
{$EXTERNALSYM SHACF_AUTOAPPEND_FORCE_OFF}
{$IFDEF SST_SHLWAPIVER5PT0}
{$IFNDEF SST_NOINCLUDESSTDYNSHLWAPI}
function SHAutoComplete(hwndEdit : HWND; dwFlags : DWORD) : HRESULT; stdcall;
{$EXTERNALSYM SHAutoComplete}
{$ENDIF} //SST_NOINCLUDESSTDYNSHLWAPI
{$ENDIF}
//SHCreateThreadRef
{$IFDEF SST_SHLWAPIVER6PT0W2003SP2}
{$IFDEF SST_INCLUDESHLWAPICOM}
function SHCreateThreadRef(pcRef : PLongint; VAR ppunk : IUnknown) : HRESULT; stdcall;
{$EXTERNALSYM SHCreateThreadRef}
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
{$IFDEF SST_INCLUDESHLWAPICOM}
function SHSetThreadRef(punk : IUnknown) : HRESULT; stdcall;
{$EXTERNALSYM SHSetThreadRef}
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
{$IFDEF SST_INCLUDESHLWAPICOM}
function SHGetThreadRef(VAR ppunk : IUnknown) : HRESULT; stdcall;
{$EXTERNALSYM SHGetThreadRef}
{$ENDIF}
{$ENDIF}
{$IFDEF SST_INCLUDESHLWAPICOM}
function SHSkipJunction(pbc : IBindCtx; clsidp : PCLSID) : BOOL; stdcall;
{$EXTERNALSYM SHSkipJunction}
{$ENDIF}
//SHCreateThread flags
const CTF_INSIST = $00000001; //"SHCreateThread() dwFlags - call pfnThreadProc synchronously if CreateThread() fails"
const CTF_THREAD_REF = $00000002; //"hold a reference to the creating thread"
const CTF_PROCESS_REF = $00000004; //"hold a reference to the creating process"
const CTF_COINIT_STA = $00000008; //"init COM as STA for the created thread"
const CTF_COINIT = CTF_COINIT_STA; //"init COM as STA for the created thread"
const CTF_FREELIBANDEXIT = $00000010; //"hold a ref to the DLL and call FreeLibraryAndExitThread() when done"
const CTF_REF_COUNTED = $00000020; //"thread supports ref counting via SHGetThreadRef() or CTF_THREAD_REF so that child threads can keep this thread alive"
const CTF_WAIT_ALLOWCOM = $00000040; //"while waiting for pfnCallback, allow COM marshaling to the blocked calling thread"
const CTF_UNUSED = $00000080;
const CTF_INHERITWOW64 = $00000100; //"new thread should inherit the wow64 disable state for the file system redirector"
const CTF_WAIT_NO_REENTRANCY = $00000200; //"don't allow re-entrancy when waiting for the sync proc, this won't work with marshalled objects or SendMessages() from the sync proc"
{$IFDEF SST_SHLWAPIVER5PT0}
function SHCreateThread(pfnThreadProc : TFNThreadStartRoutine; pData : Pointer;
dwFlags : DWORD; pfnCallback : TFNThreadStartRoutine) : BOOL; stdcall;
{$EXTERNALSYM SHCreateThread}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0}
function SHReleaseThreadRef() : HRESULT; stdcall;
{$EXTERNALSYM SHReleaseThreadRef}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0W2003SP2}
function IsInternetESCEnabled() : BOOL; stdcall;
{$EXTERNALSYM IsInternetESCEnabled}
{$ENDIF}
//
//====== GDI helper functions ================================================
//
function SHCreateShellPalette(ahdc : HDC) : HPALETTE; stdcall;
{$EXTERNALSYM SHCreateShellPalette}
{$IFDEF SST_SHLWAPIVER5PT0}
Procedure ColorRGBToHLS(clrRGB : COLORREF; pwHue : PWORD; pwLuminance : PWORD; pwSaturation : PWORD); stdcall;
{$EXTERNALSYM ColorRGBToHLS}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function ColorHLSToRGB(wHue : WORD; wLuminance : WORD; wSaturation : WORD) : COLORREF; stdcall;
{$EXTERNALSYM ColorHLSToRGB}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function ColorAdjustLuma(clrRGB : COLORREF; n : Integer; fScale : BOOL) : COLORREF; stdcall;
{$EXTERNALSYM ColorAdjustLuma}
{$ENDIF}
//====== Miscellaneous functions =============================================
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
//{$IFDEF SST_SHLWAPIVER5PT0}
function SHIsChildOrSelf(hwndParent : HWND; hWnd : HWND) : HRESULT; stdcall;
{$EXTERNALSYM SHIsChildOrSelf}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function FindResourceWrapW(hInst : HMODULE; lpName : LPCWSTR; lpType : LPCWSTR) : HRSRC; stdcall;
{$EXTERNALSYM FindResourceWrapW}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
procedure OutputDebugStringWrapW(lpOutputString : LPCWSTR); stdcall;
{$EXTERNALSYM OutputDebugStringWrapW}
{$ENDIF}
//
//====== DllGetVersion =======================================================
//
//
//"The caller should always GetProcAddress("DllGetVersion"), not
// implicitly link to it."
//
{
typedef HRESULT (CALLBACK* DLLGETVERSIONPROC)(DLLVERSIONINFO *);
// DllInstall (to be implemented by self-installing DLLs)
STDAPI DllInstall(bInstall : BOOL, pszCmdLine : LPCWSTR);
}
TYPE TDllGetVersionProc = FUNCTION(dllversioninfop : PDllVersionInfo) : HRESULT; STDCALL;
//Ported Macro
FUNCTION MakeDllVerULL(major : WORD; minor : WORD; build : WORD; qfe : WORD) : ULARGE_INTEGER;
implementation
function StrChrA; external 'shlwapi.dll' name 'StrChrA';
function StrChrW; external 'shlwapi.dll' name 'StrChrW';
function StrChr; external 'shlwapi.dll' name 'StrChrA';
function StrChrIA; external 'shlwapi.dll' name 'StrChrIA';
function StrChrIW; external 'shlwapi.dll' name 'StrChrIW';
function StrChrI; external 'shlwapi.dll' name 'StrChrI';
function StrChrNW; external 'shlwapi.dll' name 'StrChrNW';
function StrChrNIW; external 'shlwapi.dll' name 'StrChrNIW';
function StrCmpNA; external 'shlwapi.dll' name 'StrCmpNA';
function StrCmpNW; external 'shlwapi.dll' name 'StrCmpNW';
function StrCmpN; external 'shlwapi.dll' name 'StrCmpN';
function StrCmpNIA; external 'shlwapi.dll' name 'StrCmpNIA';
function StrCmpNIW; external 'shlwapi.dll' name 'StrCmpNIW';
function StrCmpNI; external 'shlwapi.dll' name 'StrCmpNIA';
function StrCSpnA; external 'shlwapi.dll' name 'StrCSpnA';
function StrCSpnW; external 'shlwapi.dll' name 'StrCSpnW';
function StrCSpn; external 'shlwapi.dll' name 'StrCSpnA';
function StrCSpnIA; external 'shlwapi.dll' name 'StrCSpnIA';
function StrCSpnIW; external 'shlwapi.dll' name 'StrCSpnIW';
function StrCSpnI; external 'shlwapi.dll' name 'StrCSpnIA';
function StrDupA; external 'shlwapi.dll' name 'StrDupA';
function StrDupW; external 'shlwapi.dll' name 'StrDupW';
function StrDup; external 'shlwapi.dll' name 'StrDupA';
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
function StrFormatByteSizeEx; external 'shlwapi.dll' name 'StrFormatByteSizeEx';
{$ENDIF}
function StrFormatByteSizeA; external 'shlwapi.dll' name 'StrFormatByteSizeA';
function StrFormatByteSizeW; external 'shlwapi.dll' name 'StrFormatByteSizeW';
function StrFormatByteSize; external 'shlwapi.dll' name 'StrFormatByteSizeA';
{$IFDEF SST_SHLWAPIVER5PT0}
function StrFormatByteSize64A; external 'shlwapi.dll' name 'StrFormatByteSize64A';
function StrFormatByteSize64; external 'shlwapi.dll' name 'StrFormatByteSize64A';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function StrFormatKBSizeA; external 'shlwapi.dll' name 'StrFormatKBSizeA';
function StrFormatKBSizeW; external 'shlwapi.dll' name 'StrFormatKBSizeW';
function StrFormatKBSize; external 'shlwapi.dll' name 'StrFormatKBSizeA';
{$ENDIF}
function StrFromTimeIntervalA; external 'shlwapi.dll' name 'StrFromTimeIntervalA';
function StrFromTimeIntervalW; external 'shlwapi.dll' name 'StrFromTimeIntervalW';
function StrFromTimeInterval; external 'shlwapi.dll' name 'StrFromTimeIntervalA';
function StrIsIntlEqualA; external 'shlwapi.dll' name 'StrIsIntlEqualA';
function StrIsIntlEqualW; external 'shlwapi.dll' name 'StrIsIntlEqualW';
function StrIsIntlEqual; external 'shlwapi.dll' name 'StrIsIntlEqualA';
function StrNCatA; external 'shlwapi.dll' name 'StrNCatA';
function StrNCatW; external 'shlwapi.dll' name 'StrNCatW';
function StrNCat; external 'shlwapi.dll' name 'StrNCatA';
function StrPBrkA; external 'shlwapi.dll' name 'StrPBrkA';
function StrPBrkW; external 'shlwapi.dll' name 'StrPBrkW';
function StrPBrk; external 'shlwapi.dll' name 'StrPBrkA';
function StrRChrA; external 'shlwapi.dll' name 'StrRChrA';
function StrRChrW; external 'shlwapi.dll' name 'StrRChrW';
function StrRChr; external 'shlwapi.dll' name 'StrRChrA';
function StrRChrIA; external 'shlwapi.dll' name 'StrRChrIA';
function StrRChrIW; external 'shlwapi.dll' name 'StrRChrIW';
function StrRChrI; external 'shlwapi.dll' name 'StrRChrIA';
function StrRStrIA; external 'shlwapi.dll' name 'StrRStrIA';
function StrRStrIW; external 'shlwapi.dll' name 'StrRStrIW';
function StrRStrI; external 'shlwapi.dll' name 'StrRStrIA';
function StrSpnA; external 'shlwapi.dll' name 'StrSpnA';
function StrSpnW; external 'shlwapi.dll' name 'StrSpnW';
function StrSpn; external 'shlwapi.dll' name 'StrSpnA';
function StrStrA; external 'shlwapi.dll' name 'StrStrA';
function StrStrW; external 'shlwapi.dll' name 'StrStrW';
function StrStr; external 'shlwapi.dll' name 'StrStrA';
function StrStrIA; external 'shlwapi.dll' name 'StrStrIA';
function StrStrIW; external 'shlwapi.dll' name 'StrStrIW';
function StrStrI; external 'shlwapi.dll' name 'StrStrIA';
{$IFDEF SST_SHLWAPIVER6PT0}
function StrStrNW; external 'shlwapi.dll' name 'StrStrNW';
function StrStrNIW; external 'shlwapi.dll' name 'StrStrNIW';
{$ENDIF}
function StrToIntA; external 'shlwapi.dll' name 'StrToIntA';
function StrToIntW; external 'shlwapi.dll' name 'StrToIntW';
function StrToInt; external 'shlwapi.dll' name 'StrToIntA';
function StrToIntExA; external 'shlwapi.dll' name 'StrToIntExA';
function StrToIntExW; external 'shlwapi.dll' name 'StrToIntExW';
function StrToIntEx; external 'shlwapi.dll' name 'StrToIntExA';
{$IFDEF SST_SHLWAPIVER6PT0}
function StrToInt64ExA; external 'shlwapi.dll' name 'StrToInt64ExA';
function StrToInt64ExW; external 'shlwapi.dll' name 'StrToInt64ExW';
function StrToInt64Ex; external 'shlwapi.dll' name 'StrToInt64ExA';
{$ENDIF}
function StrTrimA; external 'shlwapi.dll' name 'StrTrimA';
function StrTrimW; external 'shlwapi.dll' name 'StrTrimW';
function StrTrim; external 'shlwapi.dll' name 'StrTrimA';
function ChrCmpIA; external 'shlwapi.dll' name 'ChrCmpIA';
function ChrCmpIW; external 'shlwapi.dll' name 'ChrCmpIW';
function ChrCmpI; external 'shlwapi.dll' name 'ChrCmpIA';
function StrCatW; external 'shlwapi.dll' name 'StrCatW';
function StrCmpW; external 'shlwapi.dll' name 'StrCmpW';
function StrCmp; external 'shlwapi.dll' name 'StrCmpW';
function StrCmpIW; external 'shlwapi.dll' name 'StrCmpIW';
function StrCmpI; external 'shlwapi.dll' name 'StrCmpIW';
function StrCpyW; external 'shlwapi.dll' name 'StrCpyW';
function StrCpy; external 'shlwapi.dll' name 'StrCpyW';
function StrCpyNW; external 'shlwapi.dll' name 'StrCpyNW';
function StrCpyN; external 'shlwapi.dll' name 'StrCpyNW';
{$IFDEF SST_SHLWAPIVER5PT0}
function StrCatBuffA; external 'shlwapi.dll' name 'StrCatBuffA';
function StrCatBuffW; external 'shlwapi.dll' name 'StrCatBuffW';
function StrCatBuff; external 'shlwapi.dll' name 'StrCatBuff';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function wvnsprintfA; external 'shlwapi.dll' name 'wvnsprintfA';
function wvnsprintfW; external 'shlwapi.dll' name 'wvnsprintfW';
function wvnsprintf; external 'shlwapi.dll' name 'wvnsprintfA';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
//{$IFDEF SST_SHLWAPIVER6PT0W2003SP2}
function StrCmpCA; external 'shlwapi.dll' index 155;
function StrCmpCW; external 'shlwapi.dll' index 156;
function StrCmpC; external 'shlwapi.dll' index 155;
//The following three lines may be Win XP + SP2 & 2003 Server + SP2,
//and later, alternatives to the three previous.
//function StrCmpCA; external 'shlwapi.dll' name 'StrCmpCA';
//function StrCmpCW; external 'shlwapi.dll' name 'StrCmpCW';
//function StrCmpC; external 'shlwapi.dll' name 'StrCmpCA';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
//{$IFDEF SST_SHLWAPIVER6PT0W2003SP2}
function StrCmpICA; external 'shlwapi.dll' index 157;
function StrCmpICW; external 'shlwapi.dll' index 158;
function StrCmpIC; external 'shlwapi.dll' index 157;
//The following three lines may be Win XP + SP2 & 2003 Server + SP2,
//and later, alternatives to the three previous.
//function StrCmpICA; external 'shlwapi.dll' name 'StrCmpICA';
//function StrCmpICW; external 'shlwapi.dll' name 'StrCmpICW';
//function StrCmpIC; external 'shlwapi.dll' name 'StrCmpICA';
{$ENDIF}
function StrCmpNCA; external 'shlwapi.dll' name 'StrCmpNCA';
function StrCmpNCW; external 'shlwapi.dll' name 'StrCmpNCW';
function StrCmpNC; external 'shlwapi.dll' name 'StrCmpNCA';
function StrCmpNICA; external 'shlwapi.dll' name 'StrCmpNICA';
function StrCmpNICW; external 'shlwapi.dll' name 'StrCmpNICW';
function StrCmpNIC; external 'shlwapi.dll' name 'StrCmpNICA';
{$IFDEF SST_SHLWAPIVER5PT0}
function IntlStrEqWorkerA; external 'shlwapi.dll' name 'IntlStrEqWorkerA';
function IntlStrEqWorkerW; external 'shlwapi.dll' name 'IntlStrEqWorkerW';
function IntlStrEqWorker; external 'shlwapi.dll' name 'IntlStrEqWorkerA';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
{$IFDEF SST_INCLUDESHLWAPICOM}
function StrRetToStrA; external 'shlwapi.dll' name 'StrRetToStrA';
function StrRetToStrW; external 'shlwapi.dll' name 'StrRetToStrW';
function StrRetToStr; external 'shlwapi.dll' name 'StrRetToStrA';
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
{$IFDEF SST_INCLUDESHLWAPICOM}
function StrRetToBufA; external 'shlwapi.dll' name 'StrRetToBufA';
function StrRetToBufW; external 'shlwapi.dll' name 'StrRetToBufW';
function StrRetToBuf; external 'shlwapi.dll' name 'StrRetToBufA';
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function SHStrDupA; external 'shlwapi.dll' name 'SHStrDupA';
function SHStrDupW; external 'shlwapi.dll' name 'SHStrDupW';
function SHStrDup; external 'shlwapi.dll' name 'SHStrDupA';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT5}
function StrCmpLogicalW; external 'shlwapi.dll' name 'StrCmpLogicalW';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT5}
function StrCatChainW; external 'shlwapi.dll' name 'StrCatChainW';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT5}
{$IFDEF SST_INCLUDESHLWAPICOM}
function StrRetToBSTR; external 'shlwapi.dll' name 'StrRetToBSTR';
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT5}
function SHLoadIndirectString; external 'shlwapi.dll' name 'SHLoadIndirectString';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0W2003SP2}
//{$IFDEF SST_SHLWAPIVER5PT0}
function IsCharSpaceA; external 'shlwapi.dll' name 'IsCharSpaceA';
function IsCharSpaceW; external 'shlwapi.dll' name 'IsCharSpaceW';
function IsCharSpace; external 'shlwapi.dll' name 'IsCharSpaceA';
//The following line may be IE/ShlWAPi.dll version 5.0 or 5.01 (and later)
//alternative for the second of the previous three. "IsCharSpaceA" does
//not appear to have a fixed ordinal.
//function IsCharSpaceW; external 'shlwapi.dll' index 29;
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function CharLowerWrapW; external 'shlwapi.dll' index 38;
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function CharUpperBuffWrapW; external 'shlwapi.dll' index 44;
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function IsCharAlphaNumericWrapW; external 'shlwapi.dll' index 28;
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function GetDateFormatWrapW; external 'shlwapi.dll' index 311;
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function GetTimeFormatWrapW; external 'shlwapi.dll' index 310;
{$ENDIF}
//=============== Path Routines ===================================
//
function PathAddBackslashA; external 'shlwapi.dll' name 'PathAddBackslashA';
function PathAddBackslashW; external 'shlwapi.dll' name 'PathAddBackslashW';
function PathAddBackslash; external 'shlwapi.dll' name 'PathAddBackslashA';
function PathAddExtensionA; external 'shlwapi.dll' name 'PathAddExtensionA';
function PathAddExtensionW; external 'shlwapi.dll' name 'PathAddExtensionW';
function PathAddExtension; external 'shlwapi.dll' name 'PathAddExtensionA';
function PathAppendA; external 'shlwapi.dll' name 'PathAppendA';
function PathAppendW; external 'shlwapi.dll' name 'PathAppendW';
function PathAppend; external 'shlwapi.dll' name 'PathAppendA';
function PathBuildRootA; external 'shlwapi.dll' name 'PathBuildRootA';
function PathBuildRootW; external 'shlwapi.dll' name 'PathBuildRootW';
function PathBuildRoot; external 'shlwapi.dll' name 'PathBuildRootA';
function PathCanonicalizeA; external 'shlwapi.dll' name 'PathCanonicalizeA';
function PathCanonicalizeW; external 'shlwapi.dll' name 'PathCanonicalizeW';
function PathCanonicalize; external 'shlwapi.dll' name 'PathCanonicalizeA';
function PathCombineA; external 'shlwapi.dll' name 'PathCombineA';
function PathCombineW; external 'shlwapi.dll' name 'PathCombineW';
function PathCombine; external 'shlwapi.dll' name 'PathCombineA';
function PathCompactPathA; external 'shlwapi.dll' name 'PathCompactPathA';
function PathCompactPathW; external 'shlwapi.dll' name 'PathCompactPathW';
function PathCompactPath; external 'shlwapi.dll' name 'PathCompactPathA';
function PathCompactPathExA; external 'shlwapi.dll' name 'PathCompactPathExA';
function PathCompactPathExW; external 'shlwapi.dll' name 'PathCompactPathExW';
function PathCompactPathEx; external 'shlwapi.dll' name 'PathCompactPathExA';
function PathCommonPrefixA; external 'shlwapi.dll' name 'PathCommonPrefixA';
function PathCommonPrefixW; external 'shlwapi.dll' name 'PathCommonPrefixW';
function PathCommonPrefix; external 'shlwapi.dll' name 'PathCommonPrefixA';
function PathFileExistsA; external 'shlwapi.dll' name 'PathFileExistsA';
function PathFileExistsW; external 'shlwapi.dll' name 'PathFileExistsW';
function PathFileExists; external 'shlwapi.dll' name 'PathFileExistsA';
function PathFindExtensionA; external 'shlwapi.dll' name 'PathFindExtensionA';
function PathFindExtensionW; external 'shlwapi.dll' name 'PathFindExtensionW';
function PathFindExtension; external 'shlwapi.dll' name 'PathFindExtensionA';
function PathFindFileNameA; external 'shlwapi.dll' name 'PathFindFileNameA';
function PathFindFileNameW; external 'shlwapi.dll' name 'PathFindFileNameW';
function PathFindFileName; external 'shlwapi.dll' name 'PathFindFileNameA';
function PathFindNextComponentA; external 'shlwapi.dll' name 'PathFindNextComponentA';
function PathFindNextComponentW; external 'shlwapi.dll' name 'PathFindNextComponentW';
function PathFindNextComponent; external 'shlwapi.dll' name 'PathFindNextComponentA';
function PathFindOnPathA; external 'shlwapi.dll' name 'PathFindOnPathA';
function PathFindOnPathW; external 'shlwapi.dll' name 'PathFindOnPathW';
function PathFindOnPath; external 'shlwapi.dll' name 'PathFindOnPathA';
{$IFDEF SST_SHLWAPIVER5PT0}
function PathFindSuffixArrayA; external 'shlwapi.dll' name 'PathFindSuffixArrayA';
function PathFindSuffixArrayW; external 'shlwapi.dll' name 'PathFindSuffixArrayW';
function PathFindSuffixArray; external 'shlwapi.dll' name 'PathFindSuffixArrayA';
{$ENDIF}
function PathGetArgsA; external 'shlwapi.dll' name 'PathGetArgsA';
function PathGetArgsW; external 'shlwapi.dll' name 'PathGetArgsW';
function PathGetArgs; external 'shlwapi.dll' name 'PathGetArgsA';
{$IFDEF SST_SHLWAPIVER5PT0}
function PathIsLFNFileSpecA; external 'shlwapi.dll' name 'PathIsLFNFileSpecA';
function PathIsLFNFileSpecW; external 'shlwapi.dll' name 'PathIsLFNFileSpecW';
function PathIsLFNFileSpec; external 'shlwapi.dll' name 'PathIsLFNFileSpecA';
{$ENDIF}
function PathGetCharTypeA; external 'shlwapi.dll' name 'PathGetCharTypeA';
function PathGetCharTypeW; external 'shlwapi.dll' name 'PathGetCharTypeW';
function PathGetCharType; external 'shlwapi.dll' name 'PathGetCharTypeA';
function PathGetDriveNumberA; external 'shlwapi.dll' name 'PathGetDriveNumberA';
function PathGetDriveNumberW; external 'shlwapi.dll' name 'PathGetDriveNumberW';
function PathGetDriveNumber; external 'shlwapi.dll' name 'PathGetDriveNumberA';
function PathIsDirectoryA; external 'shlwapi.dll' name 'PathIsDirectoryA';
function PathIsDirectoryW; external 'shlwapi.dll' name 'PathIsDirectoryW';
function PathIsDirectory; external 'shlwapi.dll' name 'PathIsDirectoryA';
{$IFDEF SST_SHLWAPIVER5PT0}
function PathIsDirectoryEmptyA; external 'shlwapi.dll' name 'PathIsDirectoryEmptyA';
function PathIsDirectoryEmptyW; external 'shlwapi.dll' name 'PathIsDirectoryEmptyW';
function PathIsDirectoryEmpty; external 'shlwapi.dll' name 'PathIsDirectoryEmpty';
{$ENDIF}
function PathIsFileSpecA; external 'shlwapi.dll' name 'PathIsFileSpecA';
function PathIsFileSpecW; external 'shlwapi.dll' name 'PathIsFileSpecW';
function PathIsFileSpec; external 'shlwapi.dll' name 'PathIsFileSpecA';
function PathIsPrefixA; external 'shlwapi.dll' name 'PathIsPrefixA';
function PathIsPrefixW; external 'shlwapi.dll' name 'PathIsPrefixW';
function PathIsPrefix; external 'shlwapi.dll' name 'PathIsPrefixA';
function PathIsRelativeA; external 'shlwapi.dll' name 'PathIsRelativeA';
function PathIsRelativeW; external 'shlwapi.dll' name 'PathIsRelativeW';
function PathIsRelative; external 'shlwapi.dll' name 'PathIsRelativeA';
function PathIsRootA; external 'shlwapi.dll' name 'PathIsRootA';
function PathIsRootW; external 'shlwapi.dll' name 'PathIsRootW';
function PathIsRoot; external 'shlwapi.dll' name 'PathIsRootA';
function PathIsSameRootA; external 'shlwapi.dll' name 'PathIsSameRootA';
function PathIsSameRootW; external 'shlwapi.dll' name 'PathIsSameRootW';
function PathIsSameRoot; external 'shlwapi.dll' name 'PathIsSameRootA';
function PathIsUNCA; external 'shlwapi.dll' name 'PathIsUNCA';
function PathIsUNCW; external 'shlwapi.dll' name 'PathIsUNCW';
function PathIsUNC; external 'shlwapi.dll' name 'PathIsUNCA';
{$IFDEF SST_SHLWAPIVER5PT0}
function PathIsNetworkPathA; external 'shlwapi.dll' name 'PathIsNetworkPathA';
function PathIsNetworkPathW; external 'shlwapi.dll' name 'PathIsNetworkPathW';
function PathIsNetworkPath; external 'shlwapi.dll' name 'PathIsNetworkPathA';
{$ENDIF}
function PathIsUNCServerA; external 'shlwapi.dll' name 'PathIsUNCServerA';
function PathIsUNCServerW; external 'shlwapi.dll' name 'PathIsUNCServerW';
function PathIsUNCServer; external 'shlwapi.dll' name 'PathIsUNCServerA';
function PathIsUNCServerShareA; external 'shlwapi.dll' name 'PathIsUNCServerShareA'
function PathIsUNCServerShareW; external 'shlwapi.dll' name 'PathIsUNCServerShareW';
function PathIsUNCServerShare; external 'shlwapi.dll' name 'PathIsUNCServerShareA';
function PathIsContentTypeA; external 'shlwapi.dll' name 'PathIsContentTypeA';
function PathIsContentTypeW; external 'shlwapi.dll' name 'PathIsContentTypeW';
function PathIsContentType; external 'shlwapi.dll' name 'PathIsContentTypeA';
function PathIsURLA; external 'shlwapi.dll' name 'PathIsURLA';
function PathIsURLW; external 'shlwapi.dll' name 'PathIsURLW';
function PathIsURL; external 'shlwapi.dll' name 'PathIsURLA';
function PathMakePrettyA; external 'shlwapi.dll' name 'PathMakePrettyA';
function PathMakePrettyW; external 'shlwapi.dll' name 'PathMakePrettyW';
function PathMakePretty; external 'shlwapi.dll' name 'PathMakePrettyA';
function PathMatchSpecA; external 'shlwapi.dll' name 'PathMatchSpecA';
function PathMatchSpecW; external 'shlwapi.dll' name 'PathMatchSpecW';
function PathMatchSpec; external 'shlwapi.dll' name 'PathMatchSpecA';
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
function PathMatchSpecExA; external 'shlwapi.dll' name 'PathMatchSpecExA';
function PathMatchSpecExW; external 'shlwapi.dll' name 'PathMatchSpecExW';
function PathMatchSpecEx; external 'shlwapi.dll' name 'PathMatchSpecExA';
{$ENDIF}
function PathParseIconLocationA; external 'shlwapi.dll' name 'PathParseIconLocationA';
function PathParseIconLocationW; external 'shlwapi.dll' name 'PathParseIconLocationW';
function PathParseIconLocation; external 'shlwapi.dll' name 'PathParseIconLocationA';
function PathQuoteSpacesA; external 'shlwapi.dll' name 'PathQuoteSpacesA';
function PathQuoteSpacesW; external 'shlwapi.dll' name 'PathQuoteSpacesW';
function PathQuoteSpaces; external 'shlwapi.dll' name 'PathQuoteSpacesA';
function PathRelativePathToA; external 'shlwapi.dll' name 'PathRelativePathToA';
function PathRelativePathToW; external 'shlwapi.dll' name 'PathRelativePathToW';
function PathRelativePathTo; external 'shlwapi.dll' name 'PathRelativePathToA';
procedure PathRemoveArgsA; external 'shlwapi.dll' name 'PathRemoveArgsA';
procedure PathRemoveArgsW; external 'shlwapi.dll' name 'PathRemoveArgsW';
procedure PathRemoveArgs; external 'shlwapi.dll' name 'PathRemoveArgsA';
function PathRemoveBackslashA; external 'shlwapi.dll' name 'PathRemoveBackslashA';
function PathRemoveBackslashW; external 'shlwapi.dll' name 'PathRemoveBackslashW';
function PathRemoveBackslash; external 'shlwapi.dll' name 'PathRemoveBackslashA';
procedure PathRemoveBlanksA; external 'shlwapi.dll' name 'PathRemoveBlanksA';
procedure PathRemoveBlanksW; external 'shlwapi.dll' name 'PathRemoveBlanksW';
procedure PathRemoveBlanks; external 'shlwapi.dll' name 'PathRemoveBlanksA';
procedure PathRemoveExtensionA; external 'shlwapi.dll' name 'PathRemoveExtensionA';
procedure PathRemoveExtensionW; external 'shlwapi.dll' name 'PathRemoveExtensionW';
procedure PathRemoveExtension; external 'shlwapi.dll' name 'PathRemoveExtensionA';
function PathRemoveFileSpecA; external 'shlwapi.dll' name 'PathRemoveFileSpecA';
function PathRemoveFileSpecW; external 'shlwapi.dll' name 'PathRemoveFileSpecW';
function PathRemoveFileSpec; external 'shlwapi.dll' name 'PathRemoveFileSpecA';
function PathRenameExtensionA; external 'shlwapi.dll' name 'PathRenameExtensionA';
function PathRenameExtensionW; external 'shlwapi.dll' name 'PathRenameExtensionW';
function PathRenameExtension; external 'shlwapi.dll' name 'PathRenameExtensionA';
function PathSearchAndQualifyA; external 'shlwapi.dll' name 'PathSearchAndQualifyA';
function PathSearchAndQualifyW; external 'shlwapi.dll' name 'PathSearchAndQualifyW';
function PathSearchAndQualify; external 'shlwapi.dll' name 'PathSearchAndQualifyA';
procedure PathSetDlgItemPathA; external 'shlwapi.dll' name 'PathSetDlgItemPathA';
procedure PathSetDlgItemPathW; external 'shlwapi.dll' name 'PathSetDlgItemPathW';
procedure PathSetDlgItemPath; external 'shlwapi.dll' name 'PathSetDlgItemPathA';
function PathSkipRootA; external 'shlwapi.dll' name 'PathSkipRootA';
function PathSkipRootW; external 'shlwapi.dll' name 'PathSkipRootW';
function PathSkipRoot; external 'shlwapi.dll' name 'PathSkipRootA';
procedure PathStripPathA; external 'shlwapi.dll' name 'PathStripPathA';
procedure PathStripPathW; external 'shlwapi.dll' name 'PathStripPathW';
procedure PathStripPath; external 'shlwapi.dll' name 'PathStripPathA';
function PathStripToRootA; external 'shlwapi.dll' name 'PathStripToRootA';
function PathStripToRootW; external 'shlwapi.dll' name 'PathStripToRootW';
function PathStripToRoot; external 'shlwapi.dll' name 'PathStripToRootA';
function PathUnquoteSpacesA; external 'shlwapi.dll' name 'PathUnquoteSpacesA';
function PathUnquoteSpacesW; external 'shlwapi.dll' name 'PathUnquoteSpacesW';
function PathUnquoteSpaces; external 'shlwapi.dll' name 'PathUnquoteSpacesA';
function PathMakeSystemFolderA; external 'shlwapi.dll' name 'PathMakeSystemFolderA';
function PathMakeSystemFolderW; external 'shlwapi.dll' name 'PathMakeSystemFolderW';
function PathMakeSystemFolder; external 'shlwapi.dll' name 'PathMakeSystemFolderA';
function PathUnmakeSystemFolderA; external 'shlwapi.dll' name 'PathUnmakeSystemFolderA';
function PathUnmakeSystemFolderW; external 'shlwapi.dll' name 'PathUnmakeSystemFolderW';
function PathUnmakeSystemFolder; external 'shlwapi.dll' name 'PathUnmakeSystemFolderA';
function PathIsSystemFolderA; external 'shlwapi.dll' name 'PathIsSystemFolderA';
function PathIsSystemFolderW; external 'shlwapi.dll' name 'PathIsSystemFolderW';
function PathIsSystemFolder; external 'shlwapi.dll' name 'PathIsSystemFolderA';
{$IFDEF SST_SHLWAPIVER5PT0}
procedure PathUndecorateA; external 'shlwapi.dll' name 'PathUndecorateA';
procedure PathUndecorateW; external 'shlwapi.dll' name 'PathUndecorateW';
procedure PathUndecorate; external 'shlwapi.dll' name 'PathUndecorateA';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function PathUnExpandEnvStringsA; external 'shlwapi.dll' name 'PathUnExpandEnvStringsA';
function PathUnExpandEnvStringsW; external 'shlwapi.dll' name 'PathUnExpandEnvStringsW';
function PathUnExpandEnvStrings; external 'shlwapi.dll' name 'PathUnExpandEnvStringsA';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function UrlCompareA; external 'shlwapi.dll' name 'UrlCompareA';
function UrlCompareW; external 'shlwapi.dll' name 'UrlCompareW';
function UrlCompare; external 'shlwapi.dll' name 'UrlCompareA';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function UrlCombineA; external 'shlwapi.dll' name 'UrlCombineA';
function UrlCombineW; external 'shlwapi.dll' name 'UrlCombineW';
function UrlCombine; external 'shlwapi.dll' name 'UrlCombineA';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function UrlCanonicalizeA; external 'shlwapi.dll' name 'UrlCanonicalizeA';
function UrlCanonicalizeW; external 'shlwapi.dll' name 'UrlCanonicalizeW';
function UrlCanonicalize; external 'shlwapi.dll' name 'UrlCanonicalizeA';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function UrlIsOpaqueA; external 'shlwapi.dll' name 'UrlIsOpaqueA';
function UrlIsOpaqueW; external 'shlwapi.dll' name 'UrlIsOpaqueW';
function UrlIsOpaque; external 'shlwapi.dll' name 'UrlIsOpaqueA';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function UrlIsNoHistoryA; external 'shlwapi.dll' name 'UrlIsNoHistoryA';
function UrlIsNoHistoryW; external 'shlwapi.dll' name 'UrlIsNoHistoryW';
function UrlIsNoHistory; external 'shlwapi.dll' name 'UrlIsNoHistoryA';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function UrlIsA; external 'shlwapi.dll' name 'UrlIsA';
function UrlIsW; external 'shlwapi.dll' name 'UrlIsW';
function UrlIs; external 'shlwapi.dll' name 'UrlIsA';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function UrlGetLocationA; external 'shlwapi.dll' name 'UrlGetLocationA';
function UrlGetLocationW; external 'shlwapi.dll' name 'UrlGetLocationW';
function UrlGetLocation; external 'shlwapi.dll' name 'UrlGetLocationA';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function UrlUnescapeA; external 'shlwapi.dll' name 'UrlUnescapeA';
function UrlUnescapeW; external 'shlwapi.dll' name 'UrlUnescapeW';
function UrlUnescape; external 'shlwapi.dll' name 'UrlUnescapeA';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function UrlEscapeA; external 'shlwapi.dll' name 'UrlEscapeA';
function UrlEscapeW; external 'shlwapi.dll' name 'UrlEscapeW';
function UrlEscape; external 'shlwapi.dll' name 'UrlEscapeA';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function UrlCreateFromPathA; external 'shlwapi.dll' name 'UrlCreateFromPathA';
function UrlCreateFromPathW; external 'shlwapi.dll' name 'UrlCreateFromPathW';
function UrlCreateFromPath; external 'shlwapi.dll' name 'UrlCreateFromPathA';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
{$IFNDEF SST_NOINCLUDESSTDYNSHLWAPI}
function PathCreateFromUrlA; external 'shlwapi.dll' name 'PathCreateFromUrlA';
function PathCreateFromUrlW; external 'shlwapi.dll' name 'PathCreateFromUrlW';
function PathCreateFromUrl; external 'shlwapi.dll' name 'PathCreateFromUrlA';
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
function PathCreateFromUrlAlloc; external 'shlwapi.dll' name 'PathCreateFromUrlAlloc';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function UrlHashA; external 'shlwapi.dll' name 'UrlHashA';
function UrlHashW; external 'shlwapi.dll' name 'UrlHashW';
function UrlHash; external 'shlwapi.dll' name 'UrlHashA';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function UrlGetPartA; external 'shlwapi.dll' name 'UrlGetPartA';
function UrlGetPartW; external 'shlwapi.dll' name 'UrlGetPartW';
function UrlGetPart; external 'shlwapi.dll' name 'UrlGetPartA';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function UrlApplySchemeA; external 'shlwapi.dll' name 'UrlApplySchemeA';
function UrlApplySchemeW; external 'shlwapi.dll' name 'UrlApplySchemeW';
function UrlApplyScheme; external 'shlwapi.dll' name 'UrlApplySchemeA';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function HashData; external 'shlwapi.dll' name 'HashData';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
//{$IFDEF SST_SHLWAPIVER5PT0}
function UrlFixupW; external 'shlwapi.dll' name 'UrlFixupW';
//The following line may be a pre-Vista, but post version 5.0
//(i.e. version 5.5 or 6.0), alternative to the previous.
//function UrlFixupW; external 'shlwapi.dll' index 462;
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
//{$IFDEF SST_SHLWAPIVER6PT0VISTA}
function ParseURLA; external 'shlwapi.dll' index 1;
function ParseURLW; external 'shlwapi.dll' index 2;
function ParseURL; external 'shlwapi.dll' index 1;
//The following three lines are IE/ShlWAPi.dll version 6.0 (and later)
//alternatives to the three previous.
//function ParseURLA; external 'shlwapi.dll' name 'ParseURLA';
//function ParseURLW; external 'shlwapi.dll' name 'ParseURLW';
//function ParseURL; external 'shlwapi.dll' name 'ParseURLA';
{$ENDIF}
//=============== Registry Routines ===================================
function SHDeleteEmptyKeyA; external 'shlwapi.dll' name 'SHDeleteEmptyKeyA';
function SHDeleteEmptyKeyW; external 'shlwapi.dll' name 'SHDeleteEmptyKeyW';
function SHDeleteEmptyKey; external 'shlwapi.dll' name 'SHDeleteEmptyKeyA';
function SHDeleteKeyA; external 'shlwapi.dll' name 'SHDeleteKeyA';
function SHDeleteKeyW; external 'shlwapi.dll' name 'SHDeleteKeyW';
function SHDeleteKey; external 'shlwapi.dll' name 'SHDeleteKeyA';
{$IFDEF SST_SHLWAPIVER5PT0}
function SHRegDuplicateHKey; external 'shlwapi.dll' name 'SHRegDuplicateHKey';
{$ENDIF}
function SHDeleteValueA; external 'shlwapi.dll' name 'SHDeleteValueA';
function SHDeleteValueW; external 'shlwapi.dll' name 'SHDeleteValueW';
function SHDeleteValue; external 'shlwapi.dll' name 'SHDeleteValueA';
function SHGetValueA; external 'shlwapi.dll' name 'SHGetValueA';
function SHGetValueW; external 'shlwapi.dll' name 'SHGetValueW';
function SHGetValue; external 'shlwapi.dll' name 'SHGetValueA';
function SHSetValueA; external 'shlwapi.dll' name 'SHSetValueA';
function SHSetValueW; external 'shlwapi.dll' name 'SHSetValueW';
function SHSetValue; external 'shlwapi.dll' name 'SHSetValueA';
{$IFDEF SST_SHLWAPIVER6PT0W2003SP2}
function SHRegGetValueA; external 'shlwapi.dll' name 'SHRegGetValueA';
function SHRegGetValueW; external 'shlwapi.dll' name 'SHRegGetValueW';
function SHRegGetValue; external 'shlwapi.dll' name 'SHRegGetValueA';
{$ENDIF}
function SHQueryValueExA; external 'shlwapi.dll' name 'SHQueryValueExA';
function SHQueryValueExW; external 'shlwapi.dll' name 'SHQueryValueExW';
function SHQueryValueEx; external 'shlwapi.dll' name 'SHQueryValueExA';
function SHEnumKeyExA; external 'shlwapi.dll' name 'SHEnumKeyExA';
function SHEnumKeyExW; external 'shlwapi.dll' name 'SHEnumKeyExW';
function SHEnumKeyEx; external 'shlwapi.dll' name 'SHEnumKeyExA';
function SHEnumValueA; external 'shlwapi.dll' name 'SHEnumValueA';
function SHEnumValueW; external 'shlwapi.dll' name 'SHEnumValueW';
function SHEnumValue; external 'shlwapi.dll' name 'SHEnumValueA';
function SHQueryInfoKeyA; external 'shlwapi.dll' name 'SHQueryInfoKeyA';
function SHQueryInfoKeyW; external 'shlwapi.dll' name 'SHQueryInfoKeyW';
function SHQueryInfoKey; external 'shlwapi.dll' name 'SHQueryInfoKeyA';
{$IFDEF SST_SHLWAPIVER5PT0}
function SHCopyKeyA; external 'shlwapi.dll' name 'SHCopyKeyA';
function SHCopyKeyW; external 'shlwapi.dll' name 'SHCopyKeyW';
function SHCopyKey; external 'shlwapi.dll' name 'SHCopyKeyA';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function SHRegGetPathA; external 'shlwapi.dll' name 'SHRegGetPathA';
function SHRegGetPathW; external 'shlwapi.dll' name 'SHRegGetPathW';
function SHRegGetPath; external 'shlwapi.dll' name 'SHRegGetPathA';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function SHRegSetPathA; external 'shlwapi.dll' name 'SHRegSetPathA';
function SHRegSetPathW; external 'shlwapi.dll' name 'SHRegSetPathW';
function SHRegSetPath; external 'shlwapi.dll' name 'SHRegSetPathA';
{$ENDIF}
function SHRegCreateUSKeyA; external 'shlwapi.dll' name 'SHRegCreateUSKeyA';
function SHRegCreateUSKeyW; external 'shlwapi.dll' name 'SHRegCreateUSKeyW';
function SHRegCreateUSKey; external 'shlwapi.dll' name 'SHRegCreateUSKeyA';
function SHRegOpenUSKeyA; external 'shlwapi.dll' name 'SHRegOpenUSKeyA';
function SHRegOpenUSKeyW; external 'shlwapi.dll' name 'SHRegOpenUSKeyW';
function SHRegOpenUSKey; external 'shlwapi.dll' name 'SHRegOpenUSKeyA';
function SHRegQueryUSValueA; external 'shlwapi.dll' name 'SHRegQueryUSValueA';
function SHRegQueryUSValueW; external 'shlwapi.dll' name 'SHRegQueryUSValueW';
function SHRegQueryUSValue; external 'shlwapi.dll' name 'SHRegQueryUSValueA';
function SHRegWriteUSValueA; external 'shlwapi.dll' name 'SHRegWriteUSValueA';
function SHRegWriteUSValueW; external 'shlwapi.dll' name 'SHRegWriteUSValueW';
function SHRegWriteUSValue; external 'shlwapi.dll' name 'SHRegWriteUSValueA';
function SHRegDeleteUSValueA; external 'shlwapi.dll' name 'SHRegDeleteUSValueA';
function SHRegDeleteEmptyUSKeyW; external 'shlwapi.dll' name 'SHRegDeleteEmptyUSKeyW';
function SHRegDeleteUSValue; external 'shlwapi.dll' name 'SHRegDeleteUSValueA';
function SHRegDeleteEmptyUSKeyA; external 'shlwapi.dll' name 'SHRegDeleteEmptyUSKeyA';
function SHRegDeleteUSValueW; external 'shlwapi.dll' name 'SHRegDeleteUSValueW';
function SHRegDeleteEmptyUSKey; external 'shlwapi.dll' name 'SHRegDeleteEmptyUSKeyA';
function SHRegEnumUSKeyA; external 'shlwapi.dll' name 'SHRegEnumUSKeyA';
function SHRegEnumUSKeyW; external 'shlwapi.dll' name 'SHRegEnumUSKeyW';
function SHRegEnumUSKey; external 'shlwapi.dll' name 'SHRegEnumUSKeyA';
function SHRegEnumUSValueA; external 'shlwapi.dll' name 'SHRegEnumUSValueA';
function SHRegEnumUSValueW; external 'shlwapi.dll' name 'SHRegEnumUSValueW';
function SHRegEnumUSValue; external 'shlwapi.dll' name 'SHRegEnumUSValueA';
function SHRegQueryInfoUSKeyA; external 'shlwapi.dll' name 'SHRegQueryInfoUSKeyA';
function SHRegQueryInfoUSKeyW; external 'shlwapi.dll' name 'SHRegQueryInfoUSKeyW';
function SHRegQueryInfoUSKey; external 'shlwapi.dll' name 'SHRegQueryInfoUSKeyA';
function SHRegCloseUSKey; external 'shlwapi.dll' name 'SHRegCloseUSKey';
function SHRegGetUSValueA; external 'shlwapi.dll' name 'SHRegGetUSValueA';
function SHRegGetUSValueW; external 'shlwapi.dll' name 'SHRegGetUSValueW';
function SHRegGetUSValue; external 'shlwapi.dll' name 'SHRegGetUSValueA';
function SHRegSetUSValueA; external 'shlwapi.dll' name 'SHRegSetUSValueA';
function SHRegSetUSValueW; external 'shlwapi.dll' name 'SHRegSetUSValueW';
function SHRegSetUSValue; external 'shlwapi.dll' name 'SHRegSetUSValueA';
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
function SHRegGetIntW; external 'shlwapi.dll' name 'SHRegGetIntW';
//The following line may be an alternative to the previous.
//function SHRegGetIntW; external 'shlwapi.dll' index 280;
{$ENDIF}
function SHRegGetBoolUSValueA; external 'shlwapi.dll' name 'SHRegGetBoolUSValueA';
function SHRegGetBoolUSValueW; external 'shlwapi.dll' name 'SHRegGetBoolUSValueW';
function SHRegGetBoolUSValue; external 'shlwapi.dll' name 'SHRegGetBoolUSValueA';
{$IFDEF SST_SHLWAPIVER5PT0}
{$IFDEF SST_INCLUDESHLWAPICOM}
{$IFNDEF SST_NOINCLUDESSTDYNSHLWAPI}
function AssocCreate; external 'shlwapi.dll' name 'AssocCreate';
{$ENDIF}
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
{$IFNDEF SST_NOINCLUDESSTDYNSHLWAPI}
function AssocQueryStringA; external 'shlwapi.dll' name 'AssocQueryStringA';
function AssocQueryStringW; external 'shlwapi.dll' name 'AssocQueryStringW';
function AssocQueryString; external 'shlwapi.dll' name 'AssocQueryStringA';
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
{$IFNDEF SST_NOINCLUDESSTDYNSHLWAPI}
function AssocQueryStringByKeyA; external 'shlwapi.dll' name 'AssocQueryStringByKeyA';
function AssocQueryStringByKeyW; external 'shlwapi.dll' name 'AssocQueryStringByKeyW';
function AssocQueryStringByKey; external 'shlwapi.dll' name 'AssocQueryStringByKeyA';
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
{$IFNDEF SST_NOINCLUDESSTDYNSHLWAPI}
function AssocQueryKeyA; external 'shlwapi.dll' name 'AssocQueryKeyA';
function AssocQueryKeyW; external 'shlwapi.dll' name 'AssocQueryKeyW';
function AssocQueryKey; external 'shlwapi.dll' name 'AssocQueryKeyA';
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0SP1}
{$IFNDEF SST_NOINCLUDESSTDYNSHLWAPI}
function AssocIsDangerous; external 'shlwapi.dll' name 'AssocIsDangerous';
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0W2003SP2}
{$IFNDEF SST_NOINCLUDESSTDYNSHLWAPI}
function AssocGetPerceivedType; external 'shlwapi.dll' name 'AssocGetPerceivedType';
{$ENDIF}
{$ENDIF}
//=============== Stream Routines ===================================
{$IFDEF SST_INCLUDESHLWAPICOM}
function SHOpenRegStreamA; external 'shlwapi.dll' name 'SHOpenRegStreamA';
function SHOpenRegStreamW; external 'shlwapi.dll' name 'SHOpenRegStreamW';
function SHOpenRegStream; external 'shlwapi.dll' name 'SHOpenRegStreamA';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
{$IFDEF SST_INCLUDESHLWAPICOM}
function SHOpenRegStream2A; external 'shlwapi.dll' name 'SHOpenRegStream2A';
function SHOpenRegStream2W; external 'shlwapi.dll' name 'SHOpenRegStream2W';
function SHOpenRegStream2; external 'shlwapi.dll' name 'SHOpenRegStream2A';
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
{$IFDEF SST_INCLUDESHLWAPICOM}
function SHCreateStreamOnFileA; external 'shlwapi.dll' name 'SHCreateStreamOnFileA';
function SHCreateStreamOnFileW; external 'shlwapi.dll' name 'SHCreateStreamOnFileW';
function SHCreateStreamOnFile; external 'shlwapi.dll' name 'SHCreateStreamOnFileA';
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0}
{$IFDEF SST_INCLUDESHLWAPICOM}
function SHCreateStreamOnFileEx; external 'shlwapi.dll' name 'SHCreateStreamOnFileEx';
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
//{$IFDEF SST_SHLWAPIVER5PT0}
{$IFDEF SST_INCLUDESHLWAPICOM}
function SHCreateMemStream; external 'shlwapi.dll' name 'SHCreateMemStream';
//The following line may be a pre-Vista alternative
//to the previous.
//function SHCreateMemStream; external 'shlwapi.dll' index 12;
{$ENDIF}
{$ENDIF}
//=============== Multi Language UI Routines ==================================
{$IFDEF SST_SHLWAPIVER5PT0}
//{$IFDEF SST_SHLWAPIVER6PT0VISTA}
//function MLLoadLibraryA; external 'shlwapi.dll' name 'MLLoadLibraryA';
//function MLLoadLibraryW; external 'shlwapi.dll' name 'MLLoadLibraryW';
//function MLLoadLibrary; external 'shlwapi.dll' name 'MLLoadLibraryA';
//The following three lines are IE/ShlWAPi.dll version 5.0 (and later)
//alternatives to the three previous.
function MLLoadLibraryA; external 'shlwapi.dll' index 377;
function MLLoadLibraryW; external 'shlwapi.dll' index 378;
function MLLoadLibrary; external 'shlwapi.dll' index 377;
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
//{$IFDEF SST_SHLWAPIVER6PT0VISTA}
//function MLFreeLibrary; external 'shlwapi.dll' name 'MLFreeLibrary';
//The following line is a IE/ShlWAPi.dll version 5.0 alternative to the
//previous.
function MLFreeLibrary; external 'shlwapi.dll' index 418;
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function MLWinHelpA; external 'shlwapi.dll' index 395;
function MLWinHelpW; external 'shlwapi.dll' index 397;
function MLWinHelp; external 'shlwapi.dll' index 395;
{$ENDIF}
//=============== HTTP helper Routines ========================================
{$IFDEF SST_SHLWAPIVER5PT0}
//{$IFDEF SST_SHLWAPIVER6PT0W2003SP2}
//function GetAcceptLanguagesA; external 'shlwapi.dll' name 'GetAcceptLanguagesA';
//function GetAcceptLanguagesW; external 'shlwapi.dll' name 'GetAcceptLanguagesW';
//function GetAcceptLanguages; external 'shlwapi.dll' name 'GetAcceptLanguagesA';
//The following lines are IE/ShlWAPi.dll version 5.0 (and later)
//alternatives to the three previous.
function GetAcceptLanguagesA; external 'shlwapi.dll' index 14;
function GetAcceptLanguagesW; external 'shlwapi.dll' index 15;
function GetAcceptLanguages; external 'shlwapi.dll' index 14;
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
//{$IFDEF SST_SHLWAPIVER5PT0}
Procedure IUnknown_Set; external 'shlwapi.dll' name 'IUnknown_Set';
//The following line may be a IE/ShlWAPi.dll version 5.0 or 5.01 (and later)
//alternative to the previous.
//function IUnknown_Set; external 'shlwapi.dll' index 199;
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
//{$IFDEF SST_SHLWAPIVER5PT0}
Procedure IUnknown_AtomicRelease; external 'shlwapi.dll' name 'IUnknown_AtomicRelease';
//The following line may be a IE/ShlWAPi.dll version 5.0 or 5.01 (and later)
//alternative to the previous.
//function IUnknown_AtomicRelease; external 'shlwapi.dll' index 169;';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
//{$IFDEF SST_SHLWAPIVER5PT0}
function IUnknown_GetWindow; external 'shlwapi.dll' name 'IUnknown_GetWindow';
//The following line may be a IE/ShlWAPi.dll version 5.0 or 5.01 (and later)
//alternative to the previous.
//function IUnknown_GetWindow; external 'shlwapi.dll' index 172;
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
//{$IFDEF SST_SHLWAPIVER5PT0}
function IUnknown_SetSite; external 'shlwapi.dll' name 'IUnknown_SetSite';
//The following line may be a IE/ShlWAPi.dll version 5.0 or 5.01 (and later)
//alternative to the previous.
//function IUnknown_SetSite; external 'shlwapi.dll' index 174;
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
//{$IFDEF SST_SHLWAPIVER5PT0}
function IUnknown_GetSite; external 'shlwapi.dll' name 'IUnknown_GetSite';
//The following line may be a IE/ShlWAPi.dll version 5.0 or 5.01 (and later)
//alternative to the previous.
//function IUnknown_GetSite; external 'shlwapi.dll' index 256;
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
//{$IFDEF SST_SHLWAPIVER6PT0VISTA}
function IUnknown_QueryService; external 'shlwapi.dll' index 176;
//The following line is a Vista (and later) alternative
//to the previous.
//function IUnknown_QueryService; external 'shlwapi.dll' name 'IUnknown_QueryService';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
{$IFDEF SST_INCLUDESHLWAPICOM}
function IStream_Read; external 'shlwapi.dll' name 'IStream_Read';
//The following line may be a IE/ShlWAPi.dll version 5.0 or 5.01 (and later)
//alternative to the previous.
//function IStream_Read; external 'shlwapi.dll' index 184;
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
{$IFDEF SST_INCLUDESHLWAPICOM}
function IStream_Write; external 'shlwapi.dll' name 'IStream_Write';
//The following line may be a IE/ShlWAPi.dll version 5.0 or 5.01 (and later)
//alternative to the previous.
//function IStream_Read; external 'shlwapi.dll' index 212;
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
{$IFDEF SST_INCLUDESHLWAPICOM}
function IStream_Reset; external 'shlwapi.dll' name 'IStream_Reset';
//The following line may be a IE/ShlWAPi.dll version 5.0 or 5.01 (and later)
//alternative to the previous.
//function IStream_Read; external 'shlwapi.dll' index 213;
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
{$IFDEF SST_INCLUDESHLWAPICOM}
function IStream_Size; external 'shlwapi.dll' name 'IStream_Size';
//The following line may be a IE/ShlWAPi.dll version 5.0 or 5.01 (and later)
//alternative to the previous.
//function IStream_Read; external 'shlwapi.dll' index 214;
{$ENDIF}
{$ENDIF}
//ConnectToConnectionPoint
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
//{$IFDEF SST_SHLWAPIVER5PT0}
{$IFDEF SST_INCLUDESHLWAPICOM}
function ConnectToConnectionPoint; external 'shlwapi.dll' name 'ConnectToConnectionPoint';
//The following line may be a IE/ShlWAPi.dll version 5.0 or 5.01 (and later)
//alternative to the previous.
//function ConnectToConnectionPoint; external 'shlwapi.dll' index 168;
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
{$IFDEF SST_INCLUDESHLWAPICOM}
function IStream_ReadPidl; external 'shlwapi.dll' name 'IStream_ReadPidl';
function IStream_WritePidl; external 'shlwapi.dll' name 'IStream_WritePidl';
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
{$IFDEF SST_INCLUDESHLWAPICOM}
function IStream_ReadStr; external 'shlwapi.dll' name 'IStream_ReadStr';
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
{$IFDEF SST_INCLUDESHLWAPICOM}
function IStream_WriteStr; external 'shlwapi.dll' name 'IStream_WriteStr';
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
{$IFDEF SST_INCLUDESHLWAPICOM}
function IStream_Copy; external 'shlwapi.dll' name 'IStream_Copy';
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0}
function SHGetViewStatePropertyBag; external 'shlwapi.dll' name 'SHGetViewStatePropertyBag';
{$ENDIF}
//{$IFDEF SST_SHLWAPIVER6PT0VISTA}
{$IFDEF SST_SHLWAPIVER5PT0}
//function SHFormatDateTimeA; external 'shlwapi.dll' name 'SHFormatDateTimeA';
//function SHFormatDateTimeW; external 'shlwapi.dll' name 'SHFormatDateTimeW';
//function SHFormatDateTime; external 'shlwapi.dll' name 'SHFormatDateTimeA';
//The following three lines may be pre-Vista alternatives
//to the three previous.
function SHFormatDateTimeA; external 'shlwapi.dll' index 353;
function SHFormatDateTimeW; external 'shlwapi.dll' index 354;
function SHFormatDateTime; external 'shlwapi.dll' index 353;
{$ENDIF}
//{$IFDEF SST_SHLWAPIVER6PT0VISTA}
{$IFDEF SST_SHLWAPIVER5PT0}
//function SHAnsiToUnicode; external 'shlwapi.dll' name 'SHAnsiToUnicode';
//The previous line is a Vista and later alternative
//to the following.
function SHAnsiToUnicode; external 'shlwapi.dll' index 215;
{$ENDIF}
//{$IFDEF SST_SHLWAPIVER6PT0VISTA}
{$IFDEF SST_SHLWAPIVER5PT0}
//function SHAnsiToAnsi; external 'shlwapi.dll' name 'SHAnsiToAnsi';
//The previous line is a Vista and later alternative
//to the following.
function SHAnsiToAnsi; external 'shlwapi.dll' index 345;
{$ENDIF}
//{$IFDEF SST_SHLWAPIVER6PT0VISTA}
{$IFDEF SST_SHLWAPIVER5PT0}
//function SHUnicodeToAnsi; external 'shlwapi.dll' name 'SHUnicodeToAnsi';
//The previous line is a Vista and later alternative
//to the following.
function SHUnicodeToAnsi; external 'shlwapi.dll' index 217;
{$ENDIF}
//{$IFDEF SST_SHLWAPIVER6PT0VISTA}
{$IFDEF SST_SHLWAPIVER5PT0}
//function SHUnicodeToUnicode; external 'shlwapi.dll' name 'SHUnicodeToUnicode';
//The previous line is a Vista and later alternative
//to the following.
function SHUnicodeToUnicode; external 'shlwapi.dll' index 346;
{$ENDIF}
//{$IFDEF SST_SHLWAPIVER6PT0VISTA}
{$IFDEF SST_SHLWAPIVER5PT0}
//function SHMessageBoxCheckA; external 'shlwapi.dll' name 'SHMessageBoxCheckA';
//function SHMessageBoxCheckW; external 'shlwapi.dll' name 'SHMessageBoxCheckW';
//function SHMessageBoxCheck; external 'shlwapi.dll' name 'SHMessageBoxCheckA';
//The previous three lines are Vista (and later) alternatives
//to the three following.
function SHMessageBoxCheckA; external 'shlwapi.dll' index 185;
function SHMessageBoxCheckW; external 'shlwapi.dll' index 191;
function SHMessageBoxCheck; external 'shlwapi.dll' index 185;
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function SHSendMessageBroadcastA; external 'shlwapi.dll' index 432;
function SHSendMessageBroadcastW; external 'shlwapi.dll' index 433;
function SHSendMessageBroadcast; external 'shlwapi.dll' index 432;
//The following three lines are Vista (and later) alternatives
//to the three previous.
//function SHSendMessageBroadcastA; external 'shlwapi.dll' name 'SHSendMessageBroadcastA';
//function SHSendMessageBroadcastW; external 'shlwapi.dll' name 'SHSendMessageBroadcastW';
//function SHSendMessageBroadcast; external 'shlwapi.dll' name 'SHSendMessageBroadcastA';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
//{$IFDEF SST_SHLWAPIVER6PT0VISTA}
//function SHStripMneumonicA; external 'shlwapi.dll' name 'SHStripMneumonicA';
//function SHStripMneumonicW; external 'shlwapi.dll' name 'SHStripMneumonicW';
//function SHStripMneumonic; external 'shlwapi.dll' name 'SHStripMneumonicA';
//The following lines are IE/ShlWAPi.dll version 5.0 or 5.01 (and later)
//alternatives to the three previous.
function SHStripMneumonicA; external 'shlwapi.dll' index 203;
function SHStripMneumonicW; external 'shlwapi.dll' index 225;
function SHStripMneumonic; external 'shlwapi.dll' index 203;
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function IsOS; external 'shlwapi.dll' index 437;
//The following line is a Vista (and later) alternative
//to the previous.
//function IsOS; external 'shlwapi.dll' name 'IsOS';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0W2003SP2}
//{$IFDEF SST_SHLWAPIVER5PT0}
function SHAllocShared; external 'shlwapi.dll' name 'SHAllocShared';
function SHFreeShared; external 'shlwapi.dll' name 'SHFreeShared';
function SHLockShared; external 'shlwapi.dll' name 'SHLockShared';
function SHUnlockShared; external 'shlwapi.dll' name 'SHUnlockShared';
//The following lines may be IE/ShlWAPi.dll version 5.0 or 5.01 (and later)
//alternatives to the three previous.
//function SHAllocShared; external 'shlwapi.dll' index 7;
//function SHFreeShared; external 'shlwapi.dll' index 10;
//function SHLockShared; external 'shlwapi.dll' index 8;
//function SHUnlockShared; external 'shlwapi.dll' index 9;
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
//{$IFDEF SST_SHLWAPIVER6PT0VISTA}
function QISearch; external 'shlwapi.dll' index 219;
//In the event that the previous line does not work,
//try recompiling this unit using the following line
//on systems running under Vista and later.
//function QISearch; external 'shlwapi.dll' name 'QISearch';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function SHIsLowMemoryMachine; external 'shlwapi.dll' name 'SHIsLowMemoryMachine';
{$ENDIF}
//{$IFDEF SST_SHLWAPIVER6PT0VISTA}
{$IFDEF SST_SHLWAPIVER5PT0}
//function WhichPlatform; external 'shlwapi.dll' name 'WhichPlatform';
//The following line may be a IE/ShlWAPi.dll version 5.0 or 5.01 (and later)
//alternative to the previous.
function WhichPlatform; external 'shlwapi.dll' index 276;
{$ENDIF}
function GetMenuPosFromID; external 'shlwapi.dll' name 'GetMenuPosFromID';
{$IFDEF SST_SHLWAPIVER5PT0}
function SHGetInverseCMAP; external 'shlwapi.dll' name 'SHGetInverseCMAP';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
{$IFNDEF SST_NOINCLUDESSTDYNSHLWAPI}
function SHAutoComplete; external 'shlwapi.dll' name 'SHAutoComplete';
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0W2003SP2}
{$IFDEF SST_INCLUDESHLWAPICOM}
function SHCreateThreadRef; external 'shlwapi.dll' name 'SHCreateThreadRef';
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
{$IFDEF SST_INCLUDESHLWAPICOM}
function SHSetThreadRef; external 'shlwapi.dll' name 'SHSetThreadRef';
{$ENDIF}
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
{$IFDEF SST_INCLUDESHLWAPICOM}
function SHGetThreadRef; external 'shlwapi.dll' name 'SHGetThreadRef';
{$ENDIF}
{$ENDIF}
{$IFDEF SST_INCLUDESHLWAPICOM}
function SHSkipJunction; external 'shlwapi.dll' name 'SHSkipJunction';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function SHCreateThread; external 'shlwapi.dll' name 'SHCreateThread';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0}
function SHReleaseThreadRef; external 'shlwapi.dll' name 'SHReleaseThreadRef';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER6PT0W2003SP2}
function IsInternetESCEnabled; external 'shlwapi.dll' name 'IsInternetESCEnabled';
{$ENDIF}
//====== GDI helper functions ================================================
function SHCreateShellPalette; external 'shlwapi.dll' name 'SHCreateShellPalette';
{$IFDEF SST_SHLWAPIVER5PT0}
Procedure ColorRGBToHLS; external 'shlwapi.dll' name 'ColorRGBToHLS';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function ColorHLSToRGB; external 'shlwapi.dll' name 'ColorHLSToRGB';
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function ColorAdjustLuma; external 'shlwapi.dll' name 'ColorAdjustLuma';
{$ENDIF}
//====== Miscellaneous functions =============================================
{$IFDEF SST_SHLWAPIVER6PT0VISTA}
//{$IFDEF SST_SHLWAPIVER5PT0}
function SHIsChildOrSelf; external 'shlwapi.dll' name 'SHIsChildOrSelf';
//The following line may be a pre-Vista alternative
//to the previous.
//function SHIsChildOrSelf; external 'shlwapi.dll' index 204;
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function FindResourceWrapW; external 'shlwapi.dll' index 66;
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
procedure OutputDebugStringWrapW; external 'shlwapi.dll' index 115;
{$ENDIF}
//====== Ported Macro ========================================================
function MakeDllVerULL(major : WORD; minor : WORD; build : WORD; qfe : WORD) : ULARGE_INTEGER;
VAR retval : ULARGE_INTEGER;
begin
FillChar(retval, SizeOf(retval), #0);
retval.HighPart := DWORD(MakeLong(minor, major));
retval.LowPart := DWORD(MakeLong(qfe, build));
MakeDllVerULL := retval;
end;
function StrIntlEqNA(lpString1 : LPCSTR; lpString2 : LPCSTR; nChar : Integer) : BOOL; stdcall;
begin
result := StrIsIntlEqualA(TRUE, lpString1, lpString2, nChar);
end;
function StrIntlEqNW(lpString1 : LPCWSTR; lpString2 : LPCWSTR; nChar : Integer) : BOOL; stdcall;
begin
result := StrIsIntlEqualW(TRUE, lpString1, lpString2, nChar);
end;
FUNCTION StrIntlEqNIA(lpString1 : LPCSTR; lpString2 : LPCSTR; nChar : Integer) : BOOL; stdcall;
begin
result := StrIsIntlEqualA(FALSE, lpString1, lpString2, nChar);
end;
FUNCTION StrIntlEqNIW(lpString1 : LPCWSTR; lpString2 : LPCWSTR; nChar : Integer) : BOOL; stdcall;
begin
result := StrIsIntlEqualW(FALSE, lpString1, lpString2, nChar);
end;
{$IFDEF SST_SHLWAPIVER5PT0}
function IntlStrEqNA(lpString1 : LPCSTR; lpString2 : LPCSTR; nChar : Integer) : BOOL; stdcall;
begin
result := IntlStrEqWorkerA(TRUE, lpString1, lpString2, nChar);
end;
function IntlStrEqNW(lpString1 : LPCWSTR; lpString2 : LPCWSTR; nChar : Integer) : BOOL; stdcall;
begin
result := IntlStrEqWorkerW(TRUE, lpString1, lpString2, nChar);
end;
function IntlStrEqN(lpString1 : LPCSTR; lpString2 : LPCSTR; nChar : Integer) : BOOL; stdcall;
begin
result := IntlStrEqWorkerA(TRUE, lpString1, lpString2, nChar);
end;
function IntlStrEqNIA(lpString1 : LPCSTR; lpString2 : LPCSTR; nChar : Integer) : BOOL; stdcall;
begin
result := IntlStrEqWorkerA(FALSE, lpString1, lpString2, nChar);
end;
function IntlStrEqNIW(lpString1 : LPCWSTR; lpString2 : LPCWSTR; nChar : Integer) : BOOL; stdcall;
begin
result := IntlStrEqWorkerW(FALSE, lpString1, lpString2, nChar);
end;
function IntlStrEqNI(lpString1 : LPCSTR; lpString2 : LPCSTR; nChar : Integer) : BOOL; stdcall;
begin
result := IntlStrEqWorkerA(FALSE, lpString1, lpString2, nChar);
end;
{$ENDIF}
{$IFDEF SST_SHLWAPIVER5PT0}
function UrlIsFileUrlA(pszUrl : LPCSTR) : BOOL;
begin
result := UrlIsA(pszUrl, Ord(URLIS_FILEURL));
end;
function UrlIsFileUrlW(pszUrl : LPCWSTR) : BOOL;
begin
result := UrlIsW(pszUrl, Ord(URLIS_FILEURL));
end;
function UrlIsFileUrl(pszUrl : LPCSTR) : BOOL;
begin
result := UrlIsA(pszUrl, Ord(URLIS_FILEURL));
end;
{$ENDIF}
end.
|
|
Download file
|
*1
|
"$(Delphi) " (without the quotation marks)
being herein the fully qualified path to the root of your
Delphi software development kit (SDK) installation.
|
|
|